我有一个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