我有以下代码,我只是通过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”,那么它可以正常工作。
这是怎么回事?
答案 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。