我有一个简单的联系表单,并使用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
我应该检查什么才能使其在实时服务器上正常工作?
谢谢
["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)));
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句