【问题标题】:How to pass parameters properly with AJAX get request如何使用 AJAX 获取请求正确传递参数
【发布时间】:2014-08-04 03:59:29
【问题描述】:

我正在以这种方式发出 AJAX 获取请求

$(document).on("click", ".topp", function () 
{
 var id_attr_val = $(this).attr("id");
 alert(id_attr_val);
 $.ajax({
            type: 'GET',
            url: 'http://hostip:8080/OrderSnacks/oms/toppings',
            jsonpCallback: 'jsonCallback',
            dataType: 'jsonp',
            data : "topping="+id_attr_val+"",
            jsonp: false,
            success: function (response) {
             console.log(response);
            },
            error: function (e) {
                $("#divResult").html("WebSerivce unreachable");
            }
        });
});

警报值显示为 59,但是当我在控制台中观察时,它以这种方式进行调用

http://hostip:8080/OrderSnacks/oms/toppings?topping=59&_=1402670107061

你能告诉我如何发送 59 ,而不是那些多余的字符吗??

【问题讨论】:

    标签: jquery


    【解决方案1】:

    要“删除”&_=1402670107061 部分,您必须在 ajax 请求中设置以下内容:

    cache: true,
    

    而且,是的,您仍然可以使用data: {topping: id_attr_val },

    缓存 (默认:true,对于 dataType 'script' 和 'jsonp' 为 false) 类型:布尔值 如果设置为 false,它将强制浏览器不缓存请求的页面。注意:将缓存设置为 false 仅适用于 HEAD 和 GET 请求。它通过将 "_={timestamp}" 附加到 GET 参数来工作。其他类型的请求不需要该参数,除非在 IE8 中对已由 GET 请求的 URL 进行 POST。

    【讨论】:

    • 太棒了!很高兴我能帮上忙 :) 随意接受这个答案。
    【解决方案2】:

    检查服务器脚本中的topping 值,您会发现它正确设置为59。

    您看到的额外字符是第二个变量,称为_,它的值是1402670107061。您可以通过 & 字符看到这一点,该字符用于分隔多个 GET 参数。

    至于这个_ 变量是干什么用的,它是jQuery 的缓存破坏,以确保请求总是到达服务器而不是浏览器的缓存。使用dataType: jsonp 时默认为true。请参阅 Who Add "_" Single Underscore Query Parameter?http://api.jquery.com/jQuery.ajax/cache 参数。如果您想摆脱它并允许缓存结果,请在 AJAX 选项上设置 cache: true

    【讨论】:

    【解决方案3】:

    当您使用 toppings 的值时,您当前的代码应该仍然可以工作,因为& 分隔了两个不同的参数。

    查看 jquery 文档后,我发现在 ajax 选项中设置 cache:true 将删除 _ 参数。

    但是,您应该考虑是否真的要允许缓存而不是仅仅删除它。我不知道你的项目的范围,所以你要弄清楚。

    另外,如果你想重新格式化你的 ajax,你有两个选择。

    url: 'http://hostip:8080/OrderSnacks/oms/toppings',
    

    变成

    url: 'http://hostip:8080/OrderSnacks/oms/toppings?topping=' + id_attr_val,
    

    并删除数据成员

    data : "topping="+id_attr_val+"",
    

    变成

    data : {topping:id_attr_val},
    

    【讨论】:

      猜你喜欢
      • 2016-07-11
      • 2021-12-19
      • 1970-01-01
      • 2021-09-24
      • 1970-01-01
      • 2017-09-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多