这是我的ajax电话:
var urlstring = '/search/';
$.ajax({
url: urlstring+'model.php',
type: 'GET',
dataType: 'text',
'data': 'test=1',
error: function(xhr, status, error) {
console.debug(error);
},
success: function() {
console.log('success');
},
complete: function(data) {
console.log('complete');
console.debug(data);
}
});
当我更改dataType: 'json'
时,我收到此错误:
SyntaxError:JSON.parse:第1行第1列的意外数据结尾 JSON数据堆栈跟踪: jQuery.parseJSON@http://localhost/search/js/vendor/jquery.js:7964:9 ajaxConvert @ http://localhost/search/js/vendor/jquery.js:8246:19 做@ http://localhost/search/js/vendor/jquery.js:8707:15 。发送/回调/< @ http://localhost/search/js/vendor/jquery.js:9123:9
我从php返回了这样的数据,用于json类型:
json_encode($data);
我还尝试在返回数据之前设置标题:
header('Content-Type: application/json');
现在我尝试更改dataType: 'text'
:
在php文件中,
<?php
include 'config.php';
class SearchModel extends Database
{
public $searchModel = null;
public function __construct()
{
$database = new Database();
}
public function fetchLocations()
{
$query = array();
$query[] = "SELECT * FROM `tbl_location`";
$query = implode(' ', $query);
$statement = self::$connection->prepare($query);
$statement->execute();
$data = $statement->fetchAll(PDO::FETCH_ASSOC);
return $data;
}
}
$searchModel = new SearchModel();
if (isset($_GET['test'])) {
$data = $searchModel->fetchLocations();
// header('Content-Type: application/json');
return $data;
}
?>
我的ajax电话没有收到数据。我发现,success
在调用php文件之前先执行。我设置async:false,无济于事。
然后我在complete
下面添加了success
,这次我看到ajax得到的东西比我期望从服务器获得的数据更多:
对象{readyState:4,getResponseHeader: .ajax / jqXHR.getResponseHeader(),getAllResponseHeaders: .ajax / jqXHR.getAllResponseHeaders(),setRequestHeader: .ajax / jqXHR.setRequestHeader(),overrideMimeType: .ajax / jqXHR.overrideMimeType(),statusCode:.ajax / jqXHR.statusCode(), 中止:.ajax / jqXHR.abort(),状态:.Deferred / promise.state(),总是: .Deferred / promise.always(),然后:.Deferred / promise.then(),11 more ...}
答案 0 :(得分:0)
替换
return $data;
使用此
echo json_encode($data);
json_encode
将使用json编码的字符串转换您的数组,然后在JavaScript中,您可以使用$.parseJSON(data)
解析数据。
我们在使用ajax时使用 echo
而不是 return
。
答案 1 :(得分:0)
你需要
echo json_encode($data);
以便将数据发送到XHR请求。只有return
无效