繁体   English   中英

使用AJAX调用php函数总是失败

[英]Using AJAX to call a php function keeps failing

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

但是我回来的一切都失败了! 有任何想法吗?

编辑

我已经更改了不使用数据就发送的AJAX请求,只是为了排除出现问题,并且已经实现了以下人建议的一些内容,但无济于事,这就是我现在的2个文件:

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甚至由于某种原因没有被调用。

谢谢

请尝试这个

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

因为

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

还可以尝试序列化dataString,方法是

data: datastring.serialize();
  1. 小写JSON_ENCODE
  2. 成功:功能( 成功 ),错误:功能( 失败
  3. 检查萤火虫的网络标签中返回了什么。

您需要将内容标头设置为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);
}

我建议您检查服务器实际返回的内容。

错误回调收到一个表示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时,尤其会发生这种情况。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM