为什么jQuery.get()会更改我的网址?

时间:2016-04-29 15:42:09

标签: javascript jquery ajax

我有以下代码,我只是通过Ajax jQuery调用获取资源..

 $.get({
            url: "http://jennifer-lawrence/mygirl/FreeTonight.php",
            type: "GET",
            dataType: "json",
            success: function(b) {
                a(b, b.signature)
            }
        })

当我触发它时,它失败了,当我查看Chrome开发工具的“网络”标签时,我看到该请求将要发送给..

 http://jennifer-lawrence/mygirl/[object%20Object]

当然服务器返回404。

但如果我将上面代码中的“$ .get”更改为“$ .ajax”,那么它可以正常工作。

这是怎么回事?

2 个答案:

答案 0 :(得分:1)

查看文档:{​​{3}}

$.get不会以与$.ajax相同的方式获取对象。可能因为它是快速编写$.get(url)的快捷方式。

根据您的代码应该是的文档:

 $.get("http://jennifer-lawrence/mygirl/FreeTonight.php", Null,
        function(b) {
            a(b, b.signature)
        }
,'json');

或者只需将$.get更改为$.ajax,问题就解决了。

<强>实际上

您可以在版本&gt; = 1.12和&gt; = 2.2中将对象传递给$.get。因此,如果您将jQuery版本更新为其中一个版本,那么您的示例将会起作用。但type: 'GET'完全是多余的。

答案 1 :(得分:1)

[object%20Object]是您获取普通对象,将其转换为字符串,然后对其进行URL编码时所获得的。

http://jennifer-lawrence/mygirl/[object%20Object]看起来就在http://jennifer-lawrence/mygirl/,然后尝试访问相对URI [object%20Object]

如果你传递{ some: object },就好像它是一个URL的字符串表示形式,你会得到这个。

现在看the docs。您可以通过两种方式致电get

  

jQuery.get( url [, data ] [, success ] [, dataType ] )版本添加了1.0

  

jQuery.get( [settings ] )版本已添加:1.12 / 2.2

您正在使用第二种方法,但它的行为与使用第一种方法相似。

您必须使用不支持第二种方法的版本的jQuery。

使用第一种方法或升级jQuery。