我在从ajax调用中检索发布的数据时遇到问题,不确定是什么问题。下面脚本的控制台输出显示了ajax调用之前的所有内容,但连接器中没有数据
function updateOptions(data){
console.log(data);
console.log(data.id);
console.log(data.action);
var data = {id: data.id, action : data.action};
console.log(data);
$.ajax({
type: 'POST',
url: 'ajax.connector.php?action=updateOptions',
data: JSON.stringify(data),
cache: false,
dataType : "json",
success: function(data, status) {
if(data.status == 'success'){
console.log('success');
console.log(data);
}else if(data.status == 'error'){
console.log('selects not updated');
}
},
error: function(data){
console.log('an error has occurred');
},
});
}
因此前4个console.log条目正确显示数据,成功条件中的第一个console.log正确显示。第二个,显示:
Object {status: "success", msg: "Category added successfully", id: null, action: null, post: Array[0]}
连接器[更像导演]
case 'updateOptions':
error_log('Running updateOptions function ' . print_r($_POST, TRUE), 0);
$output = $sbb->updateOptions($_POST);
break;
记录下来:
Running updateOptions function Array\n(\n)\n,
如果我尝试回复$ _POST [' action']或$ _POST [' data']或某些内容,我会得到一个未定义的索引。
我强制ajax调用在php案例函数调用的类中返回成功:
public function updateOptions($data){
$output = array(
'status' => 'success',
'msg' => 'Category added successfully',
'id' => $data['id'],
'action' => $data['action'],
'post' => $data,
);
return $output;
}
所以ajax调用本身确实有用,它是未传递的数据。
不知怎的,我没有从ajax帖子中获取[或正确检索]数据。
这里有什么问题?
答案 0 :(得分:3)
你发布了JSON,$ _POST填充了key = value对,不要将JSON与application/x-www-form-urlencoded
或multipart/form-data
混合(这是php用来填充{ {1}}。
使用jQuery.ajax发送$_POST
数据传递一个数据为数据参数的对象
application/x-www-form-urlencoded