我正在使用jquery post向服务器端发送一些值。作为回应,我回来了。然后我通过使用JSON.parse()转换成一个对象...当我在控制台日志中看到我看到的对象时,我看起来很好。现在,当我试图遍历对象并尝试检索值时,我无法遍历它。我无法弄清楚我在这里失踪了什么。我在on change事件上发送值。所以基本上每次在change事件上都会运行for循环
这是我的js
$(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);
});
});
这是我正在执行此操作的页面。 http://soumghosh.com/otherProjects/phpDataOperation/eventcCalendar/testOne.php
答案 0 :(得分:1)
您无需使用$.post
解析json响应。请注意文档(https://api.jquery.com/jQuery.post/)中有第四个参数dataType
。
例如:
$.post( "test.php", { func: "getNameAndTime" }, function( data ) {
console.log( data.name ); // John
console.log( data.time ); // 2pm
}, "json");
无需解析它。
仅在成功回调中访问数据,如该示例中所示。将循环移动到成功回调中。
答案 1 :(得分:0)
尝试将代码放入回调中:
$.post("ajax.php", { categoryChoiceVal:categoryChoiceVal},function(data) {
x = $.parseJSON(data)
console.log(x);
$.each(x, function(){
html += this.address;
});
$('.dataContainer').html(html);
});
$.post
是异步的。当您致电$.post
时,服务器的响应尚未到达。通过放入回调,您可以确保在运行代码时响应已到达。