JQuery AJAX не сработает после второго раза - PullRequest
3 голосов
/ 21 октября 2011

Это чешет мне голову, при первом нажатии я просто отправляю сообщение с предупреждением data.msg. Но во второй раз 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 ]

2 голосов
/ 21 октября 2011

Вы можете попытаться отключить асинхронизацию только для его вызова установка. 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;

            });//
0 голосов
/ 22 октября 2011

Консоль сообщает много, она все еще отправляет данные поста, и я понимаю, что во второй раз, когда я отправляю, мне нужно обновить этот счет, но мой php-скрипт пошел в неправильном направлении и не выводит данные json, странно, что ошибкаФункция не сработала, если нет данных обратного вызова.Спасибо, ребята, за подсказки.

0 голосов
/ 21 октября 2011

Полагаю, вы также можете сделать это:

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

О методе die (), вызываемом перед методом live (). Думаю, в этом нет необходимости.Мои 2 цента!

0 голосов
/ 21 октября 2011

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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...