2016-12-20 5 views
2

У меня есть сценарий AJAX для вставки данных из формы в базу данных MySQL. Это AJAX.Почему код в вызове AJAX не работает?

<!-- SUBMIT FORM VIA AJAX --> 
$("#f_product").on('submit',function(event){ 
    event.preventDefault(); 

    data = $(this).serialize(); 

    $.ajax({ 
    type: "POST", 
    url: "<?php echo site_url('con_product/ins_product'); ?>", 
    data: data 
    }).success(function() { 
     alert("Products list is ready to be printed"); 
     window.open("<?php echo site_url('con_product/print_product'); ?>","_blank"); 
     window.open("<?php echo site_url('con_product/form_product'); ?>","_self"); 
    }); 
}); 
<!-- END SUBMIT FORM VIA AJAX --> 

на основе AJAX скрипт успешно вставки данных из формы в базу данных. Но почему-то сценарий успеха не работает. Зачем?

Поведение этого AJAX являются:

  • Вставка данных в базу данных - успех
  • Показать оповещения
  • Открыть новую страницу для печати цели.
  • Обновить текущую страницу в новом формате.
+2

Не работает как? –

+1

Вы должны сказать нам, что такое текущее и ожидаемое поведение. Мы не знаем, что означает «не работает». –

+0

ну, предупреждение не появляется. Не открывать новую страницу для печати и не обновлять текущую страницу. – ashura91

ответ

3

success это имя функции callback и не promise.

Вы должны использовать:

$.ajax({ 
    type: "POST", 
    url: "<?php echo site_url('con_product/ins_product'); ?>", 
    data: data, 
    success: function() { 
     alert("Products list is ready to be printed"); 
     window.open("<?php echo site_url('con_product/print_product'); ?>","_blank"); 
     window.open("<?php echo site_url('con_product/form_product'); ?>","_self"); 
    } 
}); 

Или done обещание:

$.ajax({ 
    type: "POST", 
    url: "<?php echo site_url('con_product/ins_product'); ?>", 
    data: data 
}).done(function() { 
    alert("Products list is ready to be printed"); 
    window.open("<?php echo site_url('con_product/print_product'); ?>","_blank"); 
    window.open("<?php echo site_url('con_product/form_product'); ?>","_self"); 
}); 
+0

все еще не работает – ashura91

+0

Вы проверили консоль на наличие ошибок? – Dekel

+0

Я использую firebug, и он говорит, что jquery undefined. jquery.form.js – ashura91

0

Я не уверен, если есть .success функция. Но вы можете попробовать это:

$.ajax({ 
    type: "POST", 
    url: "<?php echo site_url('con_product/ins_product'); ?>", 
    data: data, 
    success: function(){ 
     alert("Products list is ready to be printed"); 
     window.open("<?php echo site_url('con_product/print_product'); ?>","_blank"); 
     window.open("<?php echo site_url('con_product/form_product'); ?>","_self"); 
    } 
}); 
+0

Проверить мой ответ – Dekel

+0

@Dekel - при проверке документации есть, но больше не рекомендуется, потому что эта функция уже устарела –

0

Согласно http://api.jquery.com/jquery.ajax/

Deprecation Извещение: jqXHR.success(), jqXHR.error() и jqXHR.complete() обратные вызовы удаляются от JQuery 3.0. Вместо этого вы можете использовать jqXHR.done(), jqXHR.fail() и jqXHR.always().

Что делать, если ваша замена success на done?

В противном случае success должен быть объектом объекта, который вы выбрали в $.ajax({...}) с анонимной функцией в качестве значения.

Смежные вопросы