PHP将JSON返回到Ajax仅适用于localhost

时间:2016-05-24 23:37:09

标签: php jquery json ajax

我是一个简单的联系表单,使用Ajax处理PHP文件......

问题是:它在localhost上运行得很好,但它不在实时服务器上!它在控制台上给我:

[object Object]
parsererror
SyntaxError: JSON.parse: unexpected character at line 1 column 1 of the JSON data

这是我的代码:

PHP:

if (isset($error) && !empty($error)) {
    exit(json_encode(["error" => $error]));
}

exit(json_encode(["success" => "success message"]));

jQuery Ajax:

$.ajax({
    url: "./includes/form-processor.php",
    method: "POST",
    data: data,
    dataType: 'json',
    success: function (data, textStatus, jqXHR) {
        console.log(data);
        console.log(data["error"]);
        console.log(data.error);
        if ('undefined' == data.error || data.error == null) {
            message_window.text(data["success"]);
        } else {
            message_window.text(data["error"]);
        }
    },
    error: function (jqXHR, textStatus, errorThrown) {
        console.log(jqXHR + "\n" + textStatus + "\n" + errorThrown);
    }
});

我已经在堆栈溢出中读到了很多类似的问题,但是他们的大部分答案都提到它发生了,因为他们正在通过jQuery解析数据JSON并将其从后端返回再次JSON!

所以,实际上这让我不确定我是否正确地从PHP文件中返回它!

我试图以这种方式从PHP返回它:

exit(["success" => "success message"]);

exit("success" => "success message");

exit("success message");

但它也不起作用!

另外,正如我之前所说的

  

它在 localhost 上工作正常,但它不在实时服务器上!

所以,这听起来很奇怪! o.O

我应该检查什么才能使它在实时服务器上运行?

由于

1 个答案:

答案 0 :(得分:2)

["success" => "success message"]是PHP 5.4中引入的新数组语法,因此您的生产服务器可能低于5.4。您应该使用array("success"=>"success message")代替。有关您的特定代码,请使用:

exit(json_encode(array("success" => "success message")));

exit(json_encode(array("error" => $error)));