我试图在我的jquery ajax成功中得到一个json:为了工作,但我没有.......
这就是我试图做的事情:
$("#addcatform").submit(function() {
var str = $(this).serialize();
$.ajax({
type: "POST",
url: "ajax.php",
data: str,
success: function(data){
var json_x = data;
alert(json_x.firstName2);
$('#result').html(json_x.firstName2);
$('#result2').html(json_x.b);
}
});
return false;
event.preventDefault();
}); // submit end
php回应了这个:
$arr = array ('firstName2'=>'hallo','b'=>2,'c'=>3,'d'=>4,'e'=>5);
echo json_encode($arr);
这有什么不对吗?谢谢你帮忙!!!!
答案 0 :(得分:8)
你需要在使用之前解析你的json,
您可以在请求中添加dataType - jQuery将解析您的响应json
$.ajax({
type: "POST",
url: "ajax.php",
dataType: 'json',
或者,您可以自己解析它 -
success: function(data){
var json_x = $.parseJSON(data);
答案 1 :(得分:2)
你可以试试这个:
var data=$.ajax({
type: "POST",
url: 'ajax.php',
data: {
data:str
},
async: false,
dataType: 'json'
});
var msg= data.responseText;
msg=jQuery.parseJSON(msg);
我通常从我的php页面发送一个数组或消息'error'
if(msg=='error')
{
/* do something */
}
else
// use the data
这适用于jquery 1.6-> 1.8
编辑: 由于不推荐使用jquery 1.8 async。我会推荐这种格式:
$.ajax({
type: "POST",
url: 'ajax.php',
data: {
data:str
},
dataType: 'json',
).done(function(data) {
// do something with the data
})
.fail(function() {
// give appropriate message
})
答案 2 :(得分:0)
data
是您示例中的字符串。 使用jQuery.getJSON()。 编辑:由于您无法使用getJSON(dûh)执行POST请求,请使用.ajax
替换相应的数据类型。这将通过ajax检索数据,并解析生成的字符串,就好像它是JSON一样。即使使用getJSON
,结果也将是一个数组(或类似于对象的数组,不确定)。这没有您可以使用点符号访问的方法或变量。您需要通过data['a']
访问它。
$.ajax({
dataType: "json",
type: "POST",
url: "ajax.php",
data: str,
success: function(data){
var json_x = data;
alert(json_x['firstName2']);
$('#result').html(json_x['firstName2']);
$('#result2').html(json_x['b']);
}
});