我正在写一个动态的js,应该发送一个请求的行动,这是一个链接中的href属性中定义。jQuery的 - jsonp覆盖回调获取参数
链接看起来像:
<a href="module/action?callback=MyCallback">show something</a>
正如你所看到的链接有一个名为回调GET PARAM。这是定义的,因为请求方法应该尽可能通用,并且元素本身应该知道它与响应的关系。
现在我送与jQuery AJAX功能要求的动作,看起来就像是:
jQuery('#mylink').live("click", function() { jQuery.ajax({ type: 'GET', dataType:"jsonp", error: ErrorHandler.catchXhrError, url: jQuery('#mylink').attr('href'); }); });
工作得非常好,在原则。但我的问题是,jquery定义了自己的回调获取参数,我不知道,我怎么能告诉方法,在我的链接href中的回调参数是正确的,请求 - uri看起来像这样:
http:/example.com/module/action?callback=MyCallback&callback=jsonp1279196981233
的唯一出路,我明白了,是定义我自己的回调PARAM myCallBack函数命名,并在行动,而不是回调解释myCallBack函数:
<a href="module/action?callback=MyCallback">show something</a>
但我不喜欢这样的解决方案,因为我的请求uri有一个不会使用的参数:
http:/example.com/module/action?mycallback=MyCallback&callback=jsonp1279196981233
请参加,我不能定义回调方法名的AJAX方法
jQuery('#mylink').live("click", function() { jQuery.ajax({ type: 'GET', dataType:"jsonp", jsonpCallback: 'MyCallback', error: ErrorHandler.catchXhrError, url: jQuery('#mylink').attr('href'); }); });
内因为发送方法应该是通用的,并会在我们的整个侧处,响应已被处理用不同的方法以许多不同的方式。
希望我能够充分描述我的问题,并会很乐意提供任何帮助。
'callback'不仅仅是客户端。服务器在应该命名回调参数时有相同的说法。例如,YQL需要一个名为“_callback”的参数。如果你不在服务器端控制这个参数,那么就让url包含参数名称作为它的属性的一部分。 ''。没有比这更通用。如果没有指定,则回退到默认键'“回调”'。 – Anurag 2010-07-16 02:41:03
此外,您不能发送两个'回调参数,并期望所有服务器行为相同。有些人可能会拿起第一个,其他人可能会拿起第二个。例如,YQL再次使用第一个'callback'参数,如果有多个。所以这不是关于冗余,而是关于意外行为。 – Anurag 2010-07-16 02:47:33