我正在把头发拉出jQuery中似乎非常奇怪的行为。
define ['jquery', 'models/ConfigModel'], ($, ConfigModel) ->
class MyController
initialize: () ->
confData = $.getJSON('/config.json', (data) -> console.log data)
这很好用。它返回config.json的内容
define ['jquery', 'models/ConfigModel'], ($, ConfigModel) ->
class MyController
initialize: () ->
confData = $.getJSON
url: '/config.json'
success: (data) -> console.log data
这会返回index.html的内容,这可能是由服务器的.htaccess文件引起的。
RewriteEngine On
RewriteRule ^(js|css|media|api|pie|templates|config.json) - [L,NC]
RewriteCond %{REQUEST_FILENAME} !index.html
RewriteRule .* index.html [QSA,L]
我也尝试在Chrome控制台中使用JS,并获得了相同的结果。
//works well
$.getJSON('/config.json', function(data) {console.log(data)})
//index.html
$.getJSON({url:'/config.json', success: function(data) {console.log(data)}})
由于我有一个解决方法,因此解决方案对我来说不如任何人关于调试此类情况的方法的想法重要。
修改
$.getJSON({url:'/config.json', success: function(data) {console.log(data)}})
XHR finished loading: "http://site.dev/[object%20Object]]".
$.getJSON('/config.json', function(data) {console.log(data)})
XHR finished loading: "http://site.dev/config.json".
答案 0 :(得分:1)
这是getJSON
的足迹:
jQuery.getJSON( url [, data ] [, success(data, textStatus, jqXHR) ] )
我从documentation复制了这个。你只是不以你想要的方式使用这个功能。
如果要传递具有所有设置的对象,则应使用$.ajax()
。