【发布时间】:2011-03-16 10:17:41
【问题描述】:
我正在编写一个动态 js,它应该向一个动作发送请求,该动作在链接的 href 属性中定义。
链接如下:
显示一些东西如您所见,该链接有一个名为回调的 get 参数。这是定义的,因为请求方法应该尽可能通用,并且元素应该自己知道它与响应有什么关系。
现在我使用 jquery ajax 函数将请求发送到操作,如下所示:
jQuery('#mylink').live("点击", function() { jQuery.ajax({ 类型:'GET', 数据类型:“jsonp”, 错误:ErrorHandler.catchXhrError, url: jQuery('#mylink').attr('href'); }); });原则上效果很好。但我的问题是,jquery 定义了它自己的回调 get 参数,我不知道如何告诉方法,我的链接 href 中的回调参数是正确的,并且请求 uri 看起来像这样: http://example.com/module/action?callback=MyCallback&callback=jsonp1279196981233
我看到的唯一方法是定义我自己的名为 mycallback 的回调参数并在操作中解释 mycallback 而不是回调:
显示一些东西但我不喜欢这个解决方案,因为我的请求 uri 有一个不会被使用的参数:
http://example.com/module/action?mycallback=MyCallback&callback=jsonp1279196981233请注意,我无法在 ajax 方法中定义回调方法的名称
jQuery('#mylink').live("点击", function() { jQuery.ajax({ 类型:'GET', 数据类型:“jsonp”, jsonpCallback: 'MyCallback', 错误:ErrorHandler.catchXhrError, url: jQuery('#mylink').attr('href'); }); });因为 send 方法应该是通用的,并且将在我们整个方面使用,并且必须通过不同的 js 方法以多种不同的方式处理响应。
希望我能充分描述我的问题并乐于提供任何帮助。
【问题讨论】:
-
callback不仅适用于客户。服务器对回调参数的名称有平等的发言权。例如,YQL 需要一个名为"_callback"的参数。如果您不在服务器端控制此参数,则只需让 url 包含参数名称作为其属性的一部分。<a href="http://example.com" data-callback="theCallback" />。没有比这更通用的了。如果未指定,则回退到默认密钥"callback"。 -
另外,您不能发送两个
callback参数并期望所有服务器的行为相同。有些人可能会选择第一个,其他人可能会选择第二个。例如,如果有多个参数,YQL 总是使用第一个callback参数。所以这不是关于冗余,而是更多关于意外行为。
标签: javascript ajax jquery jsonp