.ajax メソッドを使用した「POST」リクエストでデータを送信できません。このスクリプトは、データベースから既存のデータを表示し、1) 最初にその ID に関連する既存の行を削除し (GET 要求を介して送信)、2) JSON を介して送信されたデータに反映された新しい行を挿入することにより、追加のデータを入力します。
以下は私のAjaxコールです
<script src="/jquery-1.10.2.min.js"></script>
<script src="/knockout-2.3.0.js"></script>
var collabModel = function(collab) {
var self = this;
self.collab= ko.observableArray(collab);
//To add empty row into the table
self.addcollab = function() {
self.collab.push({
Name: "",
Lastname: ""
});
};
self.save = function(form) {
var loc_id=<?php echo $loc;?>;
var data_1_1=ko.toJSON(self.collab);
$.ajax({
type:'POST',
url:'update_collab_info.php?loc_id='+loc_id,
// dataType: 'json',
data:data_1_1,
processData: false,
timeout:2000,
success:function(collab){
alert("This looks like"+data_1_1);
location.href="www/"
}
});
};
};
var data_from_database=<?php echo json_encode($result);?>; //This is to display any existing rows of information if present from the database
var viewModel = new collabModel(data_from_database);
ko.applyBindings(viewModel);
===========================PHP SCRIPT(update_collab_info.php)==================
<?php
$data_1=$_POST['data_1_1'];
$loc_id=$_GET['loc_id'];
$data_2=json_decode(stripslashes($data_1));
foreach($data_2 as $row){
//MYSQL query PDO PREPARE statement
//insert ($loc_id, $row['name'],$row['lastname'])
}
基本的に、foreach ステートメントは複数行のフィールドを mysql に挿入します。ここで、$loc_id はすべて同じままです。($loc_id は外部キーです)。投稿データを PHP スクリプトに取り込むことができません。json データを示すアラートが表示されますが、どういうわけかスクリプトによって解釈されません。スクリプトは、URL 経由で送信された GET 変数に応答できます。get リクエストに応答する mysql クエリを削除することはできますが、どういうわけか、json として送信された POST データから空の配列を取得します。