我是一个简单的联系表单,使用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
我应该检查什么才能使它在实时服务器上运行?
由于
答案 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)));