2011-05-12 64 views
3

这里是我的代码:

var jqxhr = $.post("mypage.php", {url:pageurl}, function() { 
     alert("fetching..."); 
}) 
.success(function() { alert("fetch complete!"); }) 
.error(function() { alert("error!"); }) 
.complete(function() { alert("complete"); }); 

// Set another completion function for the request above 
jqxhr.complete(function(){ alert("second complete"); }); 

我得到的警报(‘正在获取...’)对话框,但对其余代码没有完成。我得到错误:$ .post(“sec_fetch_report.php”,function(){alert(“fetching ...”);})。成功不是函数

我想也许我可能会失踪jquery库,但我有另一个函数调用$ .post,它运行得很好。有什么语法错误我在某处丢失或什么? 谢谢

回答

7

您的语法已损坏。你试图做的是调用$ .post()方法的.success属性,这显然不存在。看起来你还需要使用$.ajax方法而不是$.post

$.ajax({ 
    type: 'POST', 
    url: 'mypage.php', 
    data: { url: pageurl }, 
    beforeSend: function() 
    { 
     alert('Fetching....'); 
    }, 
    success: function() 
    { 
     alert('Fetch Complete'); 
    }, 
    error: function() 
    { 
     alert('Error'); 
    }, 
    complete: function() 
    { 
     alert('Complete') 
    } 
}); 
+2

他的语法在版本1.6中有效。 – ehynds 2011-05-12 18:08:58

+0

是的,它的有效。 $ .post()相当于$ .ajax({type:'POST'.... – 2011-05-12 18:10:26

+0

抱歉,必须downvote,这种语法是完全有效的.jqxhr对象是可链接的,从v1.5我相信 – 2011-05-12 18:10:40

2

这句法jQuery中唯一支持1.5+(引进deferreds的)。这听起来像你正在使用jQuery的早期版本。如果您无法升级,请将成功/错误/完整处理程序作为选项对象的方法(如Tejs的示例)。

+0

延迟是在jQuery 1.5中引入的http://api.jquery.com/category/deferred-object/ – Zirak 2011-05-12 18:15:37

+0

是的,谢谢你的纠正。 – ehynds 2011-05-12 18:18:43

0

见的例子在这里:jQuery.post

也,你可能会得到错误一样,如果你忘了链接jQuery库

相关问题