1

我在尝试获取 ajax 调用以触发 php 函数然后成功返回时遇到问题。据我所知,我的语法是正确的。

但我得到的一切都是失败的!有任何想法吗?

编辑

我已经将我的 AJAX 请求更改为在不使用数据的情况下发送,只是为了排除这是一个问题,我已经实现了人们在下面建议的一些事情,但无济于事,这是我的 2 个文件现在的样子:

船.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。

谢谢

4

4 回答 4

2

请试试这个

 json_encode(array("result"=>"true"));

因为

 json_encode(true) // will return just "true" which is not a valid json

也尝试序列化 dataString ,通过做

data: datastring.serialize();
于 2013-11-04T22:34:18.470 回答
0

您需要将内容标头设置为 jsonheader('Content-type: application/json');并确保您请求仅返回 json 因为 ajax 仅在等待“JSON”,它会引发解析错误

if(isset($_POST['ship']) && $_POST['ship'] == "true"){
  $result = "result";
  header('Content-type: application/json');
  echo json_encode(true);
}
于 2013-11-04T22:26:41.897 回答
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 时,尤其会发生这种情况。

于 2013-11-04T22:35:19.320 回答
0
  1. 小写 JSON_ENCODE
  2. 成功:函数(成功),错误:函数(失败
  3. 检查萤火虫的网络选项卡中返回的内容。
于 2013-11-04T22:14:04.513 回答