Ajax在单个请求中将GET数据加倍?

时间:2018-07-11 21:25:37

标签: javascript jquery

此Ajax调用似乎有一个奇怪的问题:

$.ajax({
    type : "GET",
    data : searchParams,
    dataType: "json",

    // handle a successful response
    success : function(json) {...}

这是结果浏览器网址:

http://localhost:8000/discover?event_search=gfgd&event_filter=&event_timeselect=&event_start_date=&event_end_date=&event_free_admission=False&event_after_five=False&event_kid_friendly=False&event_no_underage=False&event_location=BOUNDS%3A%2060.672585355151256%20-73.55389374789888%2018.26993602652665%20-121.01483124789888&search_type=Event

这是我的服务器看到的内容:

[11/Jul/2018 14:23:09] "GET /discover?event_search=gfgd&event_filter=&event_timeselect=&event_start_date=&event_end_date=&event_free_admission=False&event_after_five=False&event_kid_friendly=False&event_no_underage=False&event_location=BOUNDS%3A%2060.672585355151256%20-73.55389374789888%2018.26993602652665%20-121.01483124789888&search_type=Event&event_search=gfgd&event_filter=&event_timeselect=&event_start_date=&event_end_date=&event_free_admission=False&event_after_five=False&event_kid_friendly=False&event_no_underage=False&event_location=BOUNDS%3A%2061.31466023609533%20-73.43351449880555%2019.522712232892687%20-120.89445199880555&search_type=Event HTTP/1.1" 200 107

如果我打印searchParams到控制台,它可以正确显示每个变量的一个实例,但是我坚决地发现每个变量都有两次。

是什么原因造成的?

1 个答案:

答案 0 :(得分:1)

从注释中,当您使用已包含参数的url进行GET时,如果给jQuery提供更多数据,它将把这些数据添加到查询中,而不是替换原始数据。在这种情况下,由于没有提供网址,因此它正在获取页面的网址。

要解决此问题,如果您知道网址,则可以不使用参数对网址进行硬编码。否则,您可以尝试将网址设置为window.location.origin + window.location.pathname。这似乎是在构建不带参数的网址。

例如,当我查看此页面时,我的浏览器网址是

https://stackoverflow.com/questions/51294378/ajax-doubling-get-data-in-single-request/51294746#51294746

但是在控制台打印中使用该行代码

"https://stackoverflow.com/questions/51294378/ajax-doubling-get-data-in-single-request/51294746"