JQuery не может заставить работать функцию успеха - PullRequest
2 голосов
/ 17 февраля 2011

У меня возникли проблемы с работой success: function(){} - я использую код ajax:

jQuery.ajax({
    url: 'http://127.0.1/process_form.php'+data,
    data:  data,
    dataType: "jsonp",
    jsonp : "callback",
    jsonpCallback: "jsonpcallback"
    });

data - простая строка, которая передается jsonp, как когда будет завершенокросс-домены данных.Я знаю о безопасности с GET и что Curl будет лучше, но это простая «предопределенная» строка без ввода данных пользователем.Данные - это просто текст одной из 4 ссылок.то есть «да», «нет», «не знаю», «придумал это». На самом деле форма тоже не нужна.

Я получаю все «данные» в БД, но я могу »Это произойдет, это «следующий» бит, основанный на успехе.Если я делаю простой success: function(){}, то ничего не происходит (с этой функцией) независимо от того, «что», например, предупреждение и т. Д.

Что должно произойти (и что-то вроде этого), если данные отправлены в БД,Затем оператор jQuery.getJSON запрашивает БД и выводит ВСЕ данные, т.е. все введенные строки, а не только последние.

Когда я говорю «что-то вроде работы», jQuery.getJSON возвращает данные, но иногда «пропускает» их выполнение до следующей отправки данных.Мне кажется, что все связано с синхронизацией, потому что, если я оберну функцию «print» внутри setInterval(), все будет работать нормально.Просто мне не нужен setInterval для совместной работы.

Например:

jQuery('.addinput').live('click',function(){
    var fldID = new Date().getTime();
    var fldType = jQuery(this).html().toLowerCase();
    var data ='';
    data += '?fldID='+fldID;
    data += '&fldType='+fldType;
    data += iptime;
        jQuery.ajax({
        url: 'http://127.0.1/process_form.php'+data,
        data:  data,
        dataType: "jsonp",
        jsonp : "callback",
        jsonpCallback: "jsonpcallback"
        });


    jQuery('.loader').fadeIn('slow');

    setInterval(function() {  fn_form(iptime);  }, 3000 );

    jQuery('.loader').fadeOut('slow');

    return true;    
    });

Это работает нормально, но я действительно не хочу, чтобы функция fn_form(iptime) былапостоянно обновляется.

Я бы предпочел увидеть что-то вроде этого:

jQuery('.addinput').live('click',function(){
    var fldID = new Date().getTime();
    var fldType = jQuery(this).html().toLowerCase();
    var data ='';
    data += '?fldID='+fldID;
    data += '&fldType='+fldType;
    data += iptime;
        jQuery.ajax({
        url: 'http://127.0.1/process_form.php'+data,
        data:  data,
        dataType: "jsonp",
        jsonp : "callback",
        jsonpCallback: "jsonpcallback",
success: function(){
//  run fn_form(iptime)
}
        });

1 Ответ

0 голосов
/ 21 февраля 2011

Вы можете использовать это альтернативное решение для реализации JSONP JSONP , которое упрощает вызовы JSONP.

Особенности jQuery-JSONP:
1 - исправление ошибок в случае сбоя в сети или неправильных ответов JSON,
2- точный контроль над именованием обратного вызова и как оно передается в URL,
3 - одновременно выполняется несколько запросов с одним и тем же именем обратного вызова,
4 - два механизма кэширования (на основе браузера и на странице),
5 - возможность вручную прервать запрос, как и любой другой запрос AJAX,
механизм тайм-аута.

...