2014-10-07 103 views
0
var ColorHue = { 
    pullColor: function(){ 
     var promise = $.Deferred(); 
     $.ajax ({ 
      url: 'ajax/color/Red.json', 
      dataType: 'json', 
      type: 'get', 
      success: function(result){ 
       promise.resolve(result); 
      } 
     }); 
     return promise; 
    } 
}; 

$('#colorHue').on('click', '#colorEnter', function(event){ 
    event.preventDefault(); 
    var nowColor = ColorHue.pullColor(); 
    nowColor.done(function(result){ 
     $('#colorDepot').append(result); 
    }); 
}); 

我有一个带有变量和方法的js文件,它返回一个承诺对象,它将在'click'事件中被调用。所以如果这个文件是一个html文件,我可以将它附加到DOM中,但是出于某种原因,当这个文件是json时,这段代码会抛出一个错误。我的json文件存储在本地名为Red.json,并说内容是:通过ajax请求提取本地json数据文件

{ 
    'test': 'yes', 
    'work': 'Maybe', 
    'value': '0' 
} 

我希望专家能够提供一些见解。在此先感谢您的帮助!

+2

有什么错误? – AytanLeibowitz 2014-10-07 04:44:47

+0

你在本地文件系统上运行文件,在这种情况下你可能会得到Access-Control-Allow-Origin错误? – 2014-10-07 04:46:41

+0

我认为你需要用双引号替换单引号。 – AytanLeibowitz 2014-10-07 04:49:52

回答

0

尝试

Red.json(双引号)

{ 
    "test": "yes", 
    "work": "Maybe", 
    "value": "0" 
} 

JS

var ColorHue = { 
    pullColor: function(){ 
     // jquery ajax returns promise object 
     return $.ajax ({ 
      url: 'ajax/color/Red.json', 
      dataType: 'json', 
      type: 'GET' 
     }); 
    } 
}; 

$('#colorHue').on('click', '#colorEnter', function(event){ 
    event.preventDefault(); 
    var nowColor = ColorHue.pullColor(); 
    // process jquery ajax promise object 
    nowColor.done(function(result) { 
     // append `result` keys and values to document 
     $.each(result, function(k, v) { 
      $('#colorDepot').append(k + ":" + v + "<br>"); 
     }) 
    }); 
}); 

的jsfiddle http://jsfiddle.net/guest271314/ds57f3xa/

+0

非常感谢您的帮助。主要问题是JSON数据缺乏双引号。我真的很感谢你和社区的专业知识,因为我从未认为这是问题所在。 – Razorocean 2014-10-07 15:40:38

+0

@Razorocean不客气:) – guest271314 2014-10-07 18:33:05

0

当文件是json时,然后将它附加到一个div做类似 $('#colorDepot')。append(result.test);