我正在构建一个通过Ajax提交的表单。如果我们的数据库成功更新,则控制器中的函数返回数字ID,我想使用这些id根据结果更改视图。
我无法解析从控制器返回的ID。它们从控制器返回:
foreach($update_pending as $product){
$success_ids[] = $product['product_id'];
}
if(isset($success_ids)){
echo json_encode($success_ids);
}else{
echo json_encode(array('error'=>'Error!'));
}
ids返回如下:[129818,129819,129820]
现在我想解析这个,以便我可以根据提交的ID更改视图。我提到了这个问题JQuery Parsing JSON array,但我仍然遗漏了一些东西。
当我提交表单时,我收到错误“无法读取null的属性'长度”
这是jQuery函数(编辑:我添加了dataType:'json',结果没有变化):
$(function () {
$('form').on('submit', function (event) {
var product = $(this).attr("data-id");
event.preventDefault();
$.ajax({
type: 'POST',
url: 'category_typeahead',
data: $('form').serialize(),
dataType: 'json',
success: function (data) {
if(data.error == undefined){
alert(data);
product_ids = $.parseJSON(data);
for (var i=0, len=product_ids.length; i < len; i++) {
$(product_ids[i]).hide();
}
}else{
if($('.error_true').length==0){
$('#error').append('<div class="alert alert-error error_true">Error text</div>');
}
$('#error').show();
}
}
});
});
});
答案 0 :(得分:1)
试试这个,不需要你的var product_ids
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.8.2/jquery.min.js"></script>
<script type="text/javascript">
$(function () {
$('form').on('submit', function (event) {
var product = $(this).attr("data-id");
event.preventDefault();// using this page stop being refreshing
$.ajax({
type: 'POST',
url: 'category_typeahead',
data: $('form').serialize(),
dataType: 'json',
success: function (data) {
if(data.error == undefined){
data.forEach(function(entry){
$('#'+entry).hide();
});
}else{
if($('.error_true').length==0){
$('#error').append('<div class="alert alert-error error_true">Error text</div>');
}
$('#error').show();
}
}
});
});
});
</script>