Javascript Ajax调用未发送到POST
我有一个包含AJAX的函数,用于发送从localStorage检索的JSON对象。出于某种原因,在我的PHP脚本中,$\u POST变量中从未显示任何内容,尽管我非常确定AJAX调用成功。我的代码如下: javascript:Javascript Ajax调用未发送到POST,javascript,php,jquery,ajax,Javascript,Php,Jquery,Ajax,我有一个包含AJAX的函数,用于发送从localStorage检索的JSON对象。出于某种原因,在我的PHP脚本中,$\u POST变量中从未显示任何内容,尽管我非常确定AJAX调用成功。我的代码如下: javascript: function processResults(){ var finalResults = localStorage.getItem('results'); finalResults = JSON.stringify(finalResults);
function processResults(){
var finalResults = localStorage.getItem('results');
finalResults = JSON.stringify(finalResults);
$.ajax({
type: 'POST',
url: '../DB_add.php',
dataType: 'json',
data: {'answers': finalResults},
success: function(data){
console.log(data);
console.log('Success');
}
})
}
php脚本:
if(isset($_POST['answers'])){
$obj = json_decode($_POST['answers']);
print_r ($obj);
}
如果您能帮我解释一下为什么这不起作用,我们将不胜感激。多谢各位
到目前为止,我已经尝试了所有的选项,但似乎没有任何效果。我完全不知所措
对于提问者,finalResult变量的结构如下:
[{"answer":0,"elapsed_time":1378,"stimulus_id":"8","task_id":1},{"answer":1,"elapsed_time":157,"stimulus_id":"2","task_id":1},{"answer":1,"elapsed_time":169,"stimulus_id":"1","task_id":1}, etc....
我将删除Ajax请求中的
dataType
属性,并修改数据结构:
$.ajax({
type: 'POST',
url: '../DB_add.php',
data: 'answers='&finalResults,
success: function(data){
console.log(data);
console.log('Success');
}
})
在第二次测试中,我将测试PHP端接收到的内容:
if(isset($_POST['answers'])){
var_dump(json_encode($_POST['answers']));
}
如果使用
json.stringify发送,请删除dataType:'json',
JS
PHP代码:
if (!empty($_REQUEST['answers'])) {
$answers = json_decode(stripslashes($request['answers']));
var_dump($answers);
}
dataType:'json'
要求您在PHP中输出的内容(data
在success
部分中接受)必须是有效的json
因此,有效的json将使用PHP:
if(isset($_POST['answers'])){
echo $_POST['answers'];
}
不需要解码,它已经是json字符串了。无var\u dump
,无print\u r
查看network
下的浏览器控制台(开发者工具),并查看有关该请求的更多详细信息。你能分享输出吗?代码看起来不错,var'finalResults'设置了吗?尝试console.log(最终结果)编码>并检查其内容。我想问题就从这里开始了。“非常确定AJAX调用”——我首先要确定。然后我会确保finalResults是好的(见上面的评论),如果你的帖子出现了,我也可以这样做,但是json_解码会将其变成NULL。你能在第一行打印吗?json_解码将以静默方式失败,当它发现错误时只返回NULL。我得到一个200 OK响应,它正确地显示了附加的表单数据。它将类型显示为text/html。这会有什么不同吗?我试过了,在console.log中收到了“success”,但是php端没有显示任何内容。您可以添加一个想要发送的finalResults
值的示例吗?dataType
与您发送的内容无关。给出的解释是一个巨大的红鲱鱼,无法解释解决方案的实际内容。
if(isset($_POST['answers'])){
echo $_POST['answers'];
}