gpt4 book ai didi

javascript - jquery - jsonp覆盖回调获取参数

转载 作者:行者123 更新时间:2023-11-28 10:30:28 24 4
gpt4 key购买 nike

我正在编写一个动态 js,它应该向操作发送请求,该操作在链接的 href 属性中定义。

链接看起来像这样:

  <a href="module/action?callback=MyCallback">show something</a>

正如您所看到的,该链接有一个名为回调的获取参数。这是已定义的,因为请求方法应该尽可能通用,并且元素本身应该知道它与响应有什么关系。

现在我使用 jquery ajax 函数将请求发送到操作,如下所示:

jQuery('#mylink').live("click", function() {    jQuery.ajax({      type: 'GET',      dataType:"jsonp",      error: ErrorHandler.catchXhrError,      url: jQuery('#mylink').attr('href');    });});

原则上,这非常有效。但我的问题是,jquery 定义了自己的回调 get 参数,我不知道如何告诉该方法,链接 href 中的回调参数是正确的,并且 request-uri 看起来像这样:

  http:/example.com/module/action?callback=MyCallback&callback=jsonp1279196981233

我认为唯一的出路是定义我自己的名为 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');    });});

因为 send 方法应该是通用的,并且将在我们整个端使用,并且响应必须由不同的 js 方法以多种不同的方式处理。

希望我能够充分描述我的问题,并且很高兴获得任何帮助。

最佳答案

您应该使用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;
});
});

关于javascript - jquery - jsonp覆盖回调获取参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3256128/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com