我在弄清楚如何正确读取jQuery $.post()请求的JSON响应方面遇到了麻烦。
在下面的jQuery代码中,我根据相应的"color_entry_id"作为键,从DOM元素中获取字符串并填充关联数组:
var image_links = {};
$(this).find('input[name="color_id"]').each(function() {
var color_entry_id = $(this).val();
var image_link = $(this).parent().find('input[name="edit_image"].' + color_entry_id).val();
image_links[color_entry_id] = image_link;
});
然后我发送POST请求,将我的“image_links”数组发送出去:
$.post(
"test.php",
{ id: product_id, "images[]": jQuery.makeArray(image_links) },
function(data) {
var response = jQuery.parseJSON(data);
$.each(response.images, function(index, item) {
alert(item);
});
}
);
而且,如上所示,我尝试循环遍历响应数组并输出每个项,我希望它是一个字符串,但我只能得到警报值 "[object Object]"。我不知道如何显示我想要显示的字符串!
这是test.php的PHP代码:
<?php
$product_id = $_POST['id'];
$images = $_POST['images'];
$response = array();
$response['id'] = $product_id;
$response['images'] = $images;
echo json_encode($response);
?>
这是相关的DOM部分的外观:
<input type='hidden' value='{{ color_entry_id }}' name='color_id' />
<p><img src='{{ color_img_link }}' /></p>
<p>Image Link: <input class='{{ color_entry_id }}' name='edit_image' type='text' size='150' value='{{ color_img_link }}' /></p>
<div class='colors {{ color_entry_id }}'>
<div class='img_color'>
<a href='javascript:void' style='background:...' class='selected'></a>
<p>...</p>
</div>
</div>
我想知道是我在PHP端的JSON编码有误还是我在jQuery中遍历响应方式有误。非常感谢任何帮助!!
makeArray
对你的image_links
对象做什么?调试时最好使用console.log
,当它将对象转换为字符串时,alert
会使事情变得混乱。 - mu is too shortmakeArray
?你期望$.makeArray({a: 'b', c: 'd'})
做什么?服务器希望在$_POST['images']
中找到什么? - mu is too short