Прикованный Jquery Ajax Calls - PullRequest
       3

Прикованный Jquery Ajax Calls

1 голос
/ 10 ноября 2010

Я пытаюсь получить некоторую информацию о любой заданной веб-странице (а именно о странице и о домене), а затем выполнить JQuery асинхронный POST с полученной информацией.К сожалению, выполнение javascript достигает $ .post (), но никогда не выполняет фактический веб-запрос.Вот мой код:

$.get('../embed', {u: url}, function(html) {
    alert('got "' + html + '"');
    $.post('/media/add', { story: storyid, caption: caption, type: 5, title: title, content: html, meta: meta }, function(data) {
        var obj = jQuery.parseJSON(data); 
        var thumb = imageUrlFromMedia(obj);
        var clip = addToClipboard(obj.id, thumb || '/img/icons/embedly.png', obj.name);
    });
});

Возможно ли вообще сделать еще один вызов ajax в обработчике успеха $ .get ()?Кто-нибудь здесь имел успех с несколькими связанными HttpRequests раньше?

Ответы [ 2 ]

0 голосов
/ 18 июля 2011

Это можно сделать с помощью встроенного (без плагина) jQuery с классами $ .Deferred ().

Чаще всего к нему можно обращаться с помощью $ .when (). Then () (см .: http://api.jquery.com/jQuery.when/) или использование более сложных последовательностей с использованием $ .pipe () (см .: http://api.jquery.com/deferred.pipe/).

Здесь приведен пример использования $ .pipe (): http://charliedigital.com/2011/07/15/chaining-jquery-ajax-calls/

Для простейшегослучаев, я бы порекомендовал использовать когда-то. Для более сложных случаев вам понадобится использовать pipe для построения более крупной цепочки вызовов AJAX.

0 голосов
/ 10 ноября 2010

Вы можете использовать $ .ajax для поиска ошибок в XML-запросах HTTP или анализе JSON (к сожалению, может не работать для анализа JSON). Это должно все еще отображаться как текст, даже если это не в состоянии анализировать. В любом случае, чтобы получить сообщение об ошибке рефакторинг как так

$.ajax({
  url: '../embed',
  data: {u: url},
  success: function(html){
    ..
     $.post
    ..
  },
  error: function(XMLHTTPRequest, textStatus, errorThrown){
     //Danger Will Robinson
  }
});

Если вы не видите второй запрос, это запрос, который не выполняется. Если вы все еще не нашли ошибку, попробуйте сделать то же самое с $ .post. Вы должны рассмотреть возможность рефакторинга $ .post в $ .ajax. Кстати, parseJSON является автоматическим, если вы используете $ .getJSON вместо $ .post. Это похоже на dataType: 'json' в $ .ajax.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...