我正在编写一个动态js,它应该向一个动作发送请求,该动作在链接的href属性中定义。
链接看起来像这样:
<a href="module/action?callback=MyCallback">show something</a>
正如您所看到的,链接有一个名为callback的get参数。这是定义的,因为请求方法应该尽可能通用,并且元素应该自己知道它与响应有什么关系。
现在我使用jquery ajax函数向请求发送请求,看起来像这样:
jQuery('#mylink').live("click", function() { jQuery.ajax({ type: 'GET', dataType:"jsonp", error: ErrorHandler.catchXhrError, url: jQuery('#mylink').attr('href'); }); });
原则上这很有效。但我的问题是,jquery定义了自己的回调get param,我不知道,我怎么能告诉方法,我的链接href中的回调参数是正确的,而request-uri看起来像这样: / p>
http:/example.com/module/action?callback=MyCallback&callback=jsonp1279196981233
我看到的唯一出路是定义我自己的名为mycallback的callback-param并在动作中解释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'); }); });
因为send方法应该是通用的,并且将在我们的整个方面使用,并且必须通过不同的js方法以多种不同的方式处理响应。
希望我能充分描述我的问题,并对任何帮助感到高兴。
答案 0 :(得分:0)
您应该使用jQuery.ajax
版本,但不能对回调名称进行硬编码。而是解析href属性并提取要使用的回调的名称..
这是解析..
jQuery('#mylink').live("click", function() {
var href = jQuery('#mylink').attr('href');
jQuery.ajax({
type: 'GET',
dataType:"jsonp",
jsonpCallback: href.match(/([?&]callback[a-zA-Z0-9=]+)/)[0].split('=')[1],
error: ErrorHandler.catchXhrError,
url: href;
});
});
答案 1 :(得分:0)