2014-10-07 69 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);