Php 无法在对象中循环
我正在使用jquerypost向服务器端发送一些值。作为回应,我得到了字符串。然后,我使用JSON.parse()将其转换为一个对象……当我查看控制台日志时,我看到了这个对象,这对我来说很好。现在,当我尝试遍历对象并尝试检索值时,我无法遍历它。我不知道我在这里错过了什么。我正在发送一个on change事件的值。因此,基本上for循环将在每次on change事件时运行 这是我的jsPhp 无法在对象中循环,php,jquery,ajax,Php,Jquery,Ajax,我正在使用jquerypost向服务器端发送一些值。作为回应,我得到了字符串。然后,我使用JSON.parse()将其转换为一个对象……当我查看控制台日志时,我看到了这个对象,这对我来说很好。现在,当我尝试遍历对象并尝试检索值时,我无法遍历它。我不知道我在这里错过了什么。我正在发送一个on change事件的值。因此,基本上for循环将在每次on change事件时运行 这是我的js $(function(){ var categoryChoiceVal = ''; var x
$(function(){
var categoryChoiceVal = '';
var x = [];
var html = '';
$('select').change(function() {
categoryChoiceVal = $('.categoryChoice option:selected').text().replace(/ /g, '%20');
$.post("ajax.php", { categoryChoiceVal:categoryChoiceVal},function(data) {
x = $.parseJSON(data)
console.log(x);
});
$.each(x, function(){
html += this.address;
});
$('.dataContainer').html(html);
});
});
这是我正在做这件事的页面。
尝试将代码放入回调:
$.post("ajax.php", { categoryChoiceVal:categoryChoiceVal},function(data) {
x = $.parseJSON(data)
console.log(x);
$.each(x, function(){
html += this.address;
});
$('.dataContainer').html(html);
});
$.post
是异步的。调用$.post
时,服务器的响应尚未到达。通过放入回调函数,可以确保在运行代码时响应已经到达。您不需要使用$解析json响应。post
。请注意,文档()中有第四个参数dataType
例如:
$.post( "test.php", { func: "getNameAndTime" }, function( data ) {
console.log( data.name ); // John
console.log( data.time ); // 2pm
}, "json");
不需要解析它
只有在成功回调中才能访问数据,如该示例所示。将您的循环移动到成功回调中。@Khanh——如果我这样做,我将变得未定义that@soum:未定义的
是什么?@Khanh--输出未定义。您应该能够从链接中看到它。如果你需要看我的php代码,让我知道我可以分享它too@soum:我看到您的x是一个包含项目数组的对象,这是您需要数据的地方。只需将您的代码更改为$。每个(x.items,function(){
相同的问题一天会被问十次。可能是@joe的重复,但我实际上在做服务器端$json=json\u encode($obj,json\u PRETTY\u PRINT);echo$json;这就是我转换为对象的原因。我是否应该像那样处理它?JQuery将自动为您解析json。您不需要自己解析它。