2010-11-09 59 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调用链。