使用Jquery AJAX从javascript到PHP的JSON数据

使用Jquery AJAX从javascript到PHP的JSON数据,javascript,php,jquery,ajax,json,Javascript,Php,Jquery,Ajax,Json,使用下面的代码,我试图通过javascript将JSON数据发送到PHP脚本 在单步执行代码时观察“isRunning”返回true,即表明AJAX没有运行,但是一旦代码进展到AJAX代码的下一部分,“isRunning”更改为false 我已尝试在第二部分中捕获错误,该部分返回“意外错误” 有没有人对我做错了什么有什么建议,或者我如何才能捕捉到信息更丰富的错误响应 var isRunning = true; $.ajax({ url: url, success: functio

使用下面的代码,我试图通过javascript将JSON数据发送到PHP脚本

在单步执行代码时观察“isRunning”返回true,即表明AJAX没有运行,但是一旦代码进展到AJAX代码的下一部分,“isRunning”更改为false

我已尝试在第二部分中捕获错误,该部分返回“意外错误”

有没有人对我做错了什么有什么建议,或者我如何才能捕捉到信息更丰富的错误响应

var isRunning = true;
$.ajax({
    url: url,
    success: function(resp) {
        isRunning = false;
    }
});

jsonString = JSON.stringify(row);

$.ajax({
    type: 'POST',
    dataType: 'json',
    url: 'email_rma.php',
    data: {
        json: jsonString
    },
    success: function(data) {
        console.log('The answer from the PHP file: ' + data);
    },
    error: function(jqXHR, textStatus, errorThrown) {
        if (jqXHR.status == 500) {
            console.log('Internal error: ' + jqXHR.responseText);
        } else {
            console.log('Unexpected error.');
        }
    }
});
多谢各位


多亏了大家或他们的建议,我认为问题在于JSON.stringify转换,而且我注意到我没有包括PHP方面,我基本上将其保持在最低限度

$data = json_decode($_POST['json']);
echo "Data:-".$data."<BR>"; 
$data=json\u decode($\u POST['json']);
回显“数据:-”$Data.“
”;

问题是否可能出在PHP方面?

正如之前多次讨论的那样,ajax是异步的,这意味着它在您请求isRunning变量时运行。如果您想知道此调用是否成功,请像大多数现代浏览器一样使用网络控制台。这将显示是否进行呼叫以及服务器响应


对于第二部分,代码看起来是正确的。但是,如果从浏览器运行代码,则只能看到客户端。我建议您也使用这里的网络控制台。url中的一个小错误可能已经导致代码输出意外错误。无论哪种方式,您都需要更多信息,如服务器响应、错误代码等

您是否也尝试过使用意外错误记录jqXHR.responseText?或者在该行上放置断点并检查调试器中的变量

如果这对你没有帮助,你可以试着调试php端,看看代码是如何执行的,哪里出了问题

还请记住ajax是异步的,因此您的isRunning可能会在页面的一半或全部完成时发生更改

编辑: 如果您没有针对php的调试器,那么从长远来看,获得一个设置肯定会为您节省大量的麻烦。
我推荐,因为它有一个适用于多种语言(包括javascript和php)的强大工具集。您还需要在服务器上配置以允许远程调试。

若要处理错误,请在执行时使用错误设置,但PHP也可以返回JSON数据,因此您可以处理来自PHP的更多错误

$.ajax({
type: 'POST',
dataType: 'json',
url: 'email_rma.php',
data: {
    json: jsonString
},
success: function(data) {
    if(data.errorCode) {
        console.log('The answer from the PHP file: Error #' + data.errorCode + ' - ' + data.errorException);
    } else {
        console.log('The answer from the PHP file: ' + data.responseText);
    }
},
error: function(jqXHR, textStatus, errorThrown) {
    if (jqXHR.status == 500) {
        console.log('Internal error: ' + jqXHR.responseText);
    } else {
        console.log('Unexpected error.');
    }
}
});
在PHP文件中,您可以处理错误,如果一切正常,则返回以下内容:

        $response = array(
            "responseText" => "AJAX is working OK.",
            "errorCode" => 0,
            "errorException" => ""
        );
如果必须返回错误,例如MySQL错误或类似的错误,请执行以下操作:

        $response = array(
            "responseText" => "",
            "errorCode" => 1,
            "errorException" => "Your error message here."
        );
最后将JSON数据发送回AJAX:

echo json_encode($response);

首先,您做错了一件事—希望
isRunning
变量立即更改,它是异步的,这意味着它在您正在执行的代码发生时并行运行。它可能会在以后的任何时候发生变化。关于下半年-尝试记录除500以外的代码的响应文本和状态。。。可能有助于识别错误。感谢所有人或他们的建议,我认为问题在于JSON.stringify转换,而且我注意到我没有包括PHP端,我基本上保持了$data=JSON_decode($_POST['JSON']);回显“数据:-”$Data.“
”;问题是否可能出在PHP方面?绝对可能。在浏览器中浏览到
email_rma.php
时会发生什么?您是否确定
json\u解码
正在工作?您正在运行什么版本的PHP?