JQuery AJAX第二次不会开火

时间:2011-10-21 07:52:23

标签: javascript events serialization jquery

这是我的头,我第一次点击它,提交报警data.msg就好了。但是第二次,ajax什么也没做,警报“在这里结束”仍然开火所以我认为没问题点击活动。我的ajax怎么了?因为序列化的事情?

                $('#inv-btn-submit').live('click',function(e) {

                    $.ajax({
                        type : 'POST',
                        url : '<?= base_url();?>main/insertInvoice',
                        dataType : 'json',
                        data: {product_list:$('.namabarang').serializeArray(),
                            qty_list : $('.qty').serializeArray(),
                            cost_list : $('.cost').serializeArray(),
                            customer_meta:$('#customer input, textarea').serializeArray()
                        },

                        success : function(data){
                           alert(data.msg);


                        },
                        error : function(XMLHttpRequest, textStatus, errorThrown) {
                            alert('There was an error. ');
                        }
                    });//end of ajax
                    alert("end here");
                    return false;

                });// end of button click

4 个答案:

答案 0 :(得分:2)

您可以尝试仅为其呼叫关闭异步 设置。 async:false

 $('#inv-btn-submit').live('click',function(e) {

                $.ajax({
                    type : 'POST',
                    url : '<?= base_url();?>main/insertInvoice',
                    dataType : 'json',
                    data: {product_list:$('.namabarang').serializeArray(),
                        qty_list : $('.qty').serializeArray(),
                        cost_list : $('.cost').serializeArray(),
                        customer_meta:$('#customer input, textarea').serializeArray()
                    },

                    async: false,

                    success : function(data){
                       alert(data.msg);


                    },
                    error : function(XMLHttpRequest, textStatus, errorThrown) {
                        alert('There was an error. ');
                    }
                });//end of ajax
                alert("end here");
                return false;

            });//

答案 1 :(得分:0)

serializeArray适用于表单选择器,例如:$('form').serializeArray();将返回一个数据数组,以发布到请求的URI / URL,不确定它是否适用于各个输入。 请注意,我已经将die()置于现场之前,因为这会杀死任何先前的事件。 也许,您可能还需要添加e.preventDefault();,以便在提交时停止表单刷新页面。

 $('#inv-btn-submit').die().live('click',function(e) {
   var get_data = $('form').serializeArray();
   $.ajax({
    type : 'POST',
    url : '<?= base_url();?>main/insertInvoice',
    dataType : 'json',
    data: get_data,
    success : function(data){
         alert(data.msg);
    },
    error : function(XMLHttpRequest, textStatus, errorThrown) {
       alert('There was an error. ');
    }
 });//end of ajax
 alert("end here");
 return false;
});// end of button click

答案 2 :(得分:0)

我想你也可以这样做:

...
data: {product_list: return $('.namabarang').serializeArray(),
...

关于在live()方法之前调用的die()方法我想没有必要。 我的2美分!

答案 3 :(得分:0)

控制台告诉很多,它仍然发送了帖子数据,我意识到我第二次提交我必须更新该发票但我的PHP脚本走向错误的方向并且没有回显json数据,这很奇怪错误如果没有回调数据,则函数不会触发。谢谢你的提示。