我在尝试获取ajax调用以触发php函数然后成功返回时遇到问题。据我所知,我的语法是正确的。
但我回来的都失败了!有什么想法吗?
修改
我已经改变了我的AJAX请求,不使用数据发送,只是为了排除这是一个问题,我已经实现了人们在下面建议的一些事情,但无济于事,继承人我现在的2个文件:/ p>
ship.js:
function set_ship()
{
//var datastring = {'ship':'true'};
$.ajax({
type:'POST',
url:'soap/classes/class.ship.php',
success: function(success){
alert('success');
},
error: function(fail){
console.log(fail);
}
});
}
我的PHP class.ship.php:
<?php
var_dump("hello");
header('Content-type: application/json');
echo json_encode(array("result"=>"true"));
从我的PHP脚本上的var_dump中我可以看到class.ship.php甚至因某些原因被调用。
由于
答案 0 :(得分:2)
请试试这个
json_encode(array("result"=>"true"));
,因为
json_encode(true) // will return just "true" which is not a valid json
也可以尝试通过
序列化dataStringdata: datastring.serialize();
答案 1 :(得分:0)
答案 2 :(得分:0)
您需要将内容标头设置为json header('Content-type: application/json');
并确保您请求仅返回json coz ajax仅等待“JSON”并且它将抛出解析错误
if(isset($_POST['ship']) && $_POST['ship'] == "true"){
$result = "result";
header('Content-type: application/json');
echo json_encode(true);
}
答案 3 :(得分:0)
我建议您检查服务器实际返回的内容。
错误回调接收一个表示xhr对象的参数,因此您可以通过放置断点或使用控制台日志记录直接检查它,如下所示
error: function(xhr) {
console.log(xhr);
}
同样,成功回调接收三个参数:状态,返回的数据和XMLHTTPRequest对象,因此您可以以相同的方式检查它们:
success: function(status, data, xhr) {
console.log(status, data, xhr);
}
您应该在xhr对象中查找响应状态代码和响应文本,以了解出现了什么问题。如果您看到200 OK响应状态,则从服务器返回的数据可能未被正确解释为JSON数据,因此您应尝试将响应头服务器端设置为application / json。
如果您的回复附加或添加了其他内容,也可能会发生错误。如果在返回之前代码中出现警告并且您将错误报告设置为ON,则会发生这种情况。