2017-08-16 107 views
0

我收到一個控制檯錯誤消息:$ .each(...)。done在運行此代碼時不是函數。將數據插入到數據庫中的php代碼正在工作,因爲我可以在數據庫中看到文件名。我只需要修復我的循環來停止出現錯誤,但不知道這裏有什麼問題。如何在ajax調用中使用.each

$("#edit_pic").on("click", function (e) { 
     e.preventDefault(); 
     var files = $('input[name="file"]').val() 
     var data = JSON.parse(files) 
    } 

    $.each(data, function (index, item) { 

     $.ajax({ 
      url: 'functions/add-support-images.php', 
      type: 'POST', 
      dataType: 'json', 
      data: { 
       data: item.file_name 
      }, 
      beforeSend: function() { 
       $("#edit_pic").prop("disabled", true).html("Uploading..."); 
      }, 
     }); 
    }) 

    .done(function (data) { 
     if (!data.success) { 
      console.log(data.message); 


     } else { 

      console.log(data.message); 

     } 

    }) 

PHP:

$response = array(); 
      $id = filter_var($_POST['id'], FILTER_SANITIZE_NUMBER_INT); 
      $stmt = $link->prepare("INSERT INTO `product_images` (`pic_name`,`product_id`) VALUES (?, ?)"); 
      $stmt->bind_param("si", $_POST['data'], $id); 
      $stmt->execute(); 
      $stmt->close(); 


     $response['success'] = true; 
     $response['message'] = "success"; 
+0

'每個'沒有一個完成的方法,但阿賈克斯功能呢。你可能希望訪問jquery文檔。 – scrappedcola

回答

1

嘗試移動.done$.ajax後:

$("#edit_pic").on("click", function (e) { 
    e.preventDefault(); 
    var files = $('input[name="file"]').val() 
    var data = JSON.parse(files) 
} 

$.each(data, function (index, item) { 

    $.ajax({ 
     url: 'functions/add-support-images.php', 
     type: 'POST', 
     dataType: 'json', 
     data: { 
      data: item.file_name 
     }, 
     beforeSend: function() { 
      $("#edit_pic").prop("disabled", true).html("Uploading..."); 
     }, 
    }).done(function (data) { 
     if (!data.success) { 
      console.log(data.message); 


     } else { 

      console.log(data.message); 

     } 

    }); 
}); 

編輯

正如在評論中提到,與上面的代碼,你會看到成功mes因爲它們是單獨發送的,因此每個項目都需要聖人。要在一個 Ajax調用發送的所有項目,你可以做這樣的事情:

let items = []; 

$.each(data, function (index, item) { 
    items.push({data: item.file_name}); 
}); 

$.ajax({ 
    url: 'functions/add-support-images.php', 
    type: 'POST', 
    dataType: 'json', 
    data: items, 
    beforeSend: function() { 
     $("#edit_pic").prop("disabled", true).html("Uploading..."); 
    }, 
}).done(function (data) { 
    if (!data.success) { 
     console.log(data.message); 
    } else { 
     console.log(data.message); 
    } 
}); 

注:這可能需要更新你的PHP代碼接受項目的數組插入,而不是單個項目。

+0

謝謝。該錯誤不再顯示。但是,我的成功消息顯示出與插入記錄相同的次數。 – user8463989

+0

是的,那是因爲你正在爲每條記錄做一個Ajax調用。另一種方法是更新您的PHP代碼以接受要更新的值的數組。然後你可以使用'$ .each'將每個'item.file_name'的值放入一個數組中。然後進行'$ .each'外部的ajax調用*。 –

+0

你在那裏失去了我。我已經添加了PHP到我原來的問題。 – user8463989

相關問題