代码之家  ›  专栏  ›  技术社区  ›  Adam Starrh

Ajax Double在单个请求中获取数据?

  •  -2
  • Adam Starrh  · 技术社区  · 8 年前

    我似乎对这个Ajax调用有一个奇怪的问题:

    $.ajax({
        type : "GET",
        data : searchParams,
        dataType: "json",
    
        // handle a successful response
        success : function(json) {...}
    

    以下是生成的浏览器URL:

    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 为了进行控制台操作,它正确地显示了每个变量的一个实例,但是我的backened肯定会找到每个变量两次。

    什么会导致这种情况?

    1 回复  |  直到 8 年前
        1
  •  1
  •   Taplar    8 年前

    从注释中,当您使用已经包含参数的URL执行GET时,如果您向jquery提供更多的数据,它会将这些数据添加到查询中,而不是替换原始数据。在本例中,由于没有提供URL,它正在获取页面的URL。

    要解决这个问题,如果你知道URL,你可以不带参数硬编码URL。否则,您可以尝试将URL设置为 window.location.origin + window.location.pathname . 这似乎是在没有参数的情况下生成URL。

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

    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"