我在我的php脚本和我的javascript文件之间的通信有一些麻烦。看来javascript正在从我写的php脚本接收html,json和“无效的json”。为什么我的带有JSONP脚本的PHP/AJAX返回HTML,JSON和无效的JSON?
在JavaScript代码,所述数据变量计算:
{"readyState":4,"status":200,"statusText":"success"}
这不是余回声下方(在任一代码点,其中我这样做)的JSON格式。根据我的研究,这是因为PHP代码中的JSON回声返回了无效的JSON(导致PHP返回此结果)。然而,当我检查控制台,我发现以下几点:
<br />
<b>Warning</b>: mysqli::mysqli() [<a href='mysqli.mysqli'>mysqli.mysqli</a>]: (28000/1045): Access denied for ... in <b>..../.php</b> on line <b>xx</b><br />
{"status":"failure","message":"Access denied for ...."}
这并不是因为任何的console.log语句我在我的代码的印刷,这是打印从Firefox的自动控制台项的结果致电http://...../.php。
代码的第一行是PHP返回的HTML,如果这不是JSON返回,并且上面的代码的底线是我创建的实际JSON对象,并且我想要使用。
我在这里发布的原因是因为我想不出为什么PHP会返回HTML,我的JSON和JSON指示无效的JSON。
我还要提到的是,我在控制台上收到另一个错误:
SyntaxError: expected expression, got '<' --> file.php:1
这表明,我认为浏览器试图解释在出于某种原因,客户端PHP的,但我不知道这是否准确。
我认为我有一个错误是所有这些症状的根源,但经过一段时间和研究后,我一直无法自己找到这个错误。
我使用的代码如下所示:
的Javascript AJAX:
$.ajax({
url: "...url.../file.php",
crossDomain: true,
type: "POST",
contentType: "application/json; charset=utf-8",
dataType: "jsonp",
data: {
name: email,
email: email
},
complete: function(data) {
console.log(JSON.stringify(data));
//this is where the {"readyState":4,"status":200,"statusText":"success"} appears
}
});
PHP(含量降低到范围这个问题):
<?php
header("Content-type: application/json");
header("Content-Disposition: attachment;Filename=\"gamesUser.json\"");
header('Access-Control-Allow-Origin: *');
header('Access-Control-Allow-Methods: POST');
header('Access-Control-Max-Age: 1000');
.........
$data = array();
$conn = @new mysqli($servername, $username, $password, $dbname, $port);
//check the connection
if ($conn->connect_error) {
$data['status'] = 'failure';
$data['message'] = $conn->connect_error;
echo json_encode($data);
} else {
.........
$data['status'] = 'success';
$data['message'] = 'operations complete';
$data['fileURL'] = $fileURL;
echo json_encode($data);
.........
}
.........
?>
解决了!
代码:
echo $_GET['callback'].'('.json_encode($data).')';
不断变化的AJAX参数一起:
type: "GET",
dataType: 'jsonp',
jsonpCallback: 'handleResponse',
data: data
有固定的问题。感谢所有协助讨论的人。
那期待“<”听起来像,所以它无法正确执行你没有逃脱的东西。你能发布产生该错误的文件的代码吗? – NickSlash
该文件将是php文件,其中包含上面的代码。 –