2012-08-23 31 views
0

我使用mockjax來模擬Ajax調用,但我遇到由我的Ajax回調接收到的數據與我傳遞給mockjax(通過'responseText'參數)不同。在這個例子中,我選擇了響應是'14 0.0' ,但回調接收‘14’,而不是:mockjax爲什麼會向我的Ajax使用者返回已更改的響應?

$.mockjax({ 
    url: "/test", 
    contentType: "text/json", 
    responseText: "14.0" 
}); 

$.ajax({ 
    url: "/test", 
    datatype: "json" 
}).done(function(data) { 
    alert(data); 
});​ 

爲什麼接收到的數據是從我指定responseText不同?查看this fiddle作爲一個工作示例;一個彈出對話框將顯示回調接收到的字符串,應該是'14'。

編輯:

這是彈出運行小提琴時,表明從mockjax改變的響應,我得到。

fiddle result

而且固定的小提琴。

回答

4

如果您更改了兩件小事情,上面的代碼段將按照您的預期工作。

在上面的代碼片段中,$ .mockjax中提到的contentType是「text/json」。在這種情況下,responseText必須是表示JSON的objecthttps://github.com/appendto/jquery-mockjax

$.mockjax({ 
    url: "/test", 
    contentType: "text/json", 
    responseText: { number: 14.0 } 
}); 

此外,在$就調用datatype關鍵應該是dataTypehttp://api.jquery.com/jquery.ajax/

$.ajax({ 
    url: "/test", 
    dataType: "json" 
}).done(function(data) { 
    console.log(data); 
}); 

我所做的更改在下面的jsfiddle http://jsfiddle.net/elijahmanor/BtuW8/

我希望幫助你過去的問題。

+0

謝謝,它似乎將字符串包裝在一個對象中('{number:「14.0」}')使所有的區別。你知道這是爲什麼嗎?在真正的Web服務中,我只是返回一個純字符串,但這可能是我所知道的不適合的JSON。 – aknuds1

+0

看來如果我想要一個純字符串值,我應該使用text/plain作爲內容類型而不是JSON。我想我學到了東西:) – aknuds1

+1

如果你想保持它爲JSON並保持.0,那麼你把數字放在引號中,就像你做的一樣... http://jsfiddle.net/elijahmanor/BtuW8/1/在JavaScript的所有數字都是浮動的。你可以像上面那樣保存JSON,然後像這樣格式化數字... console.log(data.number.toFixed(1)),如這裏所示http://jsfiddle.net/elijahmanor/BtuW8/2/如果你想返回有效的JSON我建議你用一個驗證器http://jsonlint.com/測試它,或者在你的服務器上使用一個庫導出到JSON –

相關問題