我一直在阅读很多问题,但似乎无法找到我的特殊问题 我有一个PHP脚本返回一个fetch数组,我将其编码为JSON。我的PHP脚本中没有标题(我读过一些关于它但没有线索的信息)
PHP
if (mysql_num_rows($pquery) == 1) {
$result = mysql_fetch_assoc($pquery);
echo json_encode($result);
}
jQuery
$('#c_search').submit(function(){
data = ($(this).serialize());
$.ajax({
url: 'actions/get_company.php',
type: 'POST',
data: data,
cache: false,
success: function(text){
alert (text);
alert(text[1]); // not right!
alert(text.company[0]);// not right!
}
}).error(function(){
alert('error');
})
return false;
})
我回来的文字:
{"id":"167","company":"ZEN","street":"1 S Congress Ave","email":"zxyz@yahoo.com","state":"TX","zip":"78704","phone":"512-555-1212"}
如何正确处理这个问题,以便将每个单独的部分放入自己的变量中。
答案 0 :(得分:3)
您可以使用dataType
让jQuery将响应解析为JSON:
$.ajax({
url: 'actions/get_company.php',
dataType: 'json',
[..]
data
将成为普通的Javascript Object
,因此您可以正常访问这些字段:
alert (data.street);
答案 1 :(得分:2)
data: data,
cache: false,
dataType: 'json', // <!-- indicate that the response type is JSON => not necessary if your PHP script correctly sets the Content-Type: application/json response header
success: function(text) {
alert(text.id);
alert(text.company);
alert(text.street);
alert(text.email);
...
}
答案 2 :(得分:2)
您可以使用JSON.parse()
$('#c_search').submit(function(){
data = ($(this).serialize());
$.ajax({
url: 'actions/get_company.php',
type: 'POST',
data: data,
cache: false,
success: function(text){
var obj = JSON.parse(text);
alert (text);
alert(text[1]); // not right!
alert(text.company[0]);// not right!
}
}).error(function(){
alert('error');
})
return false;
})
答案 3 :(得分:2)
尝试使用数据类型:JSON或使用$ .getJSON而不是$ .ajax。
答案 4 :(得分:1)
将dataType
设置为json
,以便为您解析json
$.ajax({
dataType:'json',
});
或者你可以通过
解析json manualy$.ajax({
dataType:'json',
success:function(json){
var parsedJSON = $.parseJSON(json);
},
});