调试$ .getJSON()在使用命名参数时提供不同的结果

时间:2013-03-11 23:12:21

标签: jquery ajax apache .htaccess requirejs

我正在把头发拉出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".

1 个答案:

答案 0 :(得分:1)

这是getJSON的足迹:

jQuery.getJSON( url [, data ] [, success(data, textStatus, jqXHR) ] )

我从documentation复制了这个。你只是以你想要的方式使用这个功能。

如果要传递具有所有设置的对象,则应使用$.ajax()