我有一個getJSON調用,這是莫名其妙地失敗。這個想法是,你點擊提交評論,URL被擊中,這決定了評論是好還是壞話。響應以JSON形式給出。getJSON失敗,JSON驗證
下面是生成呼叫的成對的JS。註釋和URL已經在頁面上,它抓住他們,並點擊的網址:
HTML表單:
<fieldset id="mg_comment_fieldset" class="inlineLabels">
<div class="ctrlHolder">
<textarea id="id_comment" rows="10" cols="40" name="comment"></textarea>
</div>
<div class="form_block">
<input type="hidden" name="next" value="" />
<input id="mg_comment_url" type="hidden" name="comment_url" value="" />
<input id="mg_comment_submit" type="submit" value="Remark" />
</div>
</fieldset>
具體JS BLOCK發送/ READS迴應:
$('input#mg_comment_submit').click(function(){
var comment = $("textarea#id_comment").val();
var comment_url = $('input#mg_comment_url').val();
$.getJSON(
comment_url+"?callback=?&comment="+comment+"&next=",
function(data){
console.log(data);
alert(data);
});
});
的JSON響應:
[{"errors": {"comment": ["Weve detected that your submission contains words which violate our Terms and Conditions. Please remove them and resubmit test"]}}]
它作爲application/json的mimetype被返回。它在JSONLint中進行驗證。我也嘗試添加一對AJAX函數來嘗試捕獲錯誤,並且它們都是沉默的。我可以在Firebug中看到請求,然後返回狀態爲200的響應,這些響應在JSONLint中進行了驗證,並且我可以在響應的JSON選項卡中正確處理。如果我在getJSON之前放置一個警報,它會運行;它只是它內部沒有運行。我還發現,如果我將.getJSON更改爲.get,則警報確實會運行,表明它與JSON有關。我對這個問題可能會有什麼想法。使用Firefox 3.0.13。
請保持你的URIs冪等。即使是阿賈克斯人。這應該使用'$ .post'。當你不這樣做時,它實際上違反了HTTP規範http://www.w3.org/2001/tag/doc/whenToUseGet.html#safe – 2009-08-10 21:42:21