2010-11-09 92 views
1

我想檢索有關任何給定的網頁(即頁面和域)的一些信息,然後用檢索到的信息做一個jQuery異步POST。不幸的是,JavaScript的執行達到$ .post(),但從來沒有做出實際的Web請求。這裏是我的代碼:鏈接JQuery的Ajax調用

$.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); 
    }); 
}); 

是否有可能在$ .get()的成功處理程序中進行另一個ajax調用?有沒有人在這之前有多個鏈接的HttpRequests有任何成功?

+0

您能否確認(使用Firebug或類似軟件)沒有請求?否則,也可能是回調不起作用。 – 2010-11-09 21:54:49

+0

這是一個打字嗎?如果不是,則爲「5」。那是你的問題。你應該把你的故事,標題,類型,標題放在qoutes裏面。這不是必需的,但是這是一個很好的習慣,因爲你意外地擁有一個屬性是一個保留字。 – Patricia 2010-11-09 21:56:18

+0

使用Firebug,我可以看到發出GET請求,並且GET回調中的警報觸發,但POST請求從未發出,回調也不會觸發。 @Patricia:抱歉,顯然當我將代碼複製到SO時,我讓一些空格滑入,我修復了它。 – Zach 2010-11-09 21:56:40

回答

0

您可以使用$ .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。順便說一句,如果您使用$ .getJSON而不是$ .post,則parseJSON是自動的。這與$ .ajax中的dataType:'json'類似。

0

這可以通過$ .Deferred()類使用native(無插件)jQuery來完成。使用$ .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調用鏈。