Javascript getJSON失败,JSON验证

Javascript getJSON失败,JSON验证,javascript,jquery,ajax,Javascript,Jquery,Ajax,我有一个getJSON调用,它莫名其妙地失败了。这个想法是,当你点击提交一条评论时,一个URL会被点击,它会决定评论是否正确,或者里面是否有淘气的词。响应以JSON形式给出 下面是生成调用的成对下JS。评论和URL已经在页面上,它会抓住它们并点击URL: 表格HTML: <fieldset id="mg_comment_fieldset" class="inlineLabels"> <div class="ctrlHolder"> <textarea id=

我有一个getJSON调用,它莫名其妙地失败了。这个想法是,当你点击提交一条评论时,一个URL会被点击,它会决定评论是否正确,或者里面是否有淘气的词。响应以JSON形式给出

下面是生成调用的成对下JS。评论和URL已经在页面上,它会抓住它们并点击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>
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。

您是否能够在没有任何错误的情况下手动调用您的服务?您是否尝试过使用firebug并在XBR下查看JSON有效负载的post/响应?我通常使用.NET作为我的端点,对于.NET3.5,我需要使用内容类型“application/json;charset=utf-8”

下面是我在.NET和jQuery1.3.2中使用的一个JSON调用的示例

$.ajax({   
    type: "POST",   
    url: "WebService1.ASMX/HelloWorld",   
    contentType: "application/json; charset=utf-8",   
    dataType: "json",   
    data: "{}",   
    success: function(res) {   
    // Do your work here.   
    // Remember, the results for a ASMX Web Service are wrapped   
    // within the object "d" by default. e.g. {"d" : "Hello World"}   
    }   
});

您是否能够在没有任何错误的情况下手动调用您的服务?您是否尝试过使用firebug并在XBR下查看JSON有效负载的post/响应?我通常使用.NET作为我的端点,对于.NET3.5,我需要使用内容类型“application/json;charset=utf-8”

下面是我在.NET和jQuery1.3.2中使用的一个JSON调用的示例

$.ajax({   
    type: "POST",   
    url: "WebService1.ASMX/HelloWorld",   
    contentType: "application/json; charset=utf-8",   
    dataType: "json",   
    data: "{}",   
    success: function(res) {   
    // Do your work here.   
    // Remember, the results for a ASMX Web Service are wrapped   
    // within the object "d" by default. e.g. {"d" : "Hello World"}   
    }   
});

你用$.ajax试过了吗?然后,您可以定义错误和成功回调,并有更好的想法。

您用$.ajax尝试过吗?然后,您可以定义错误和成功回调,并有更好的想法。

您可以尝试添加一个全局ajaxError函数来记录错误吗

$.ajaxError( function(event, XMLHttpRequest, ajaxOptions, thrownError){
   console.log( thrownError );
 });

是否可以尝试添加全局ajaxError函数来记录错误

$.ajaxError( function(event, XMLHttpRequest, ajaxOptions, thrownError){
   console.log( thrownError );
 });
如果您正在使用跨站点脚本或jsonp,则querystring参数“
callback=?
”将起作用,如果您正在发布相同的服务器,则不需要使用该参数

如果您需要或想要使用该选项,服务器端代码需要返回包含在json响应中的回调函数

示例:

$jsonData = getDataAsJson($_GET['symbol']);
echo $_GET['callback'] . '(' . $jsonData . ');';
// prints: jsonp1232617941775({"symbol" : "IBM", "price" : "91.42"});
因此,如果需要,可以在服务器端进行更改,也可以从url中删除“
callback=?
”参数

如果您使用的是跨站点脚本或jsonp,那么querystring参数“
callback=?
”将起作用,如果您发布的是同一台服务器,则不需要使用该参数

如果您需要或想要使用该选项,服务器端代码需要返回包含在json响应中的回调函数

示例:

$jsonData = getDataAsJson($_GET['symbol']);
echo $_GET['callback'] . '(' . $jsonData . ');';
// prints: jsonp1232617941775({"symbol" : "IBM", "price" : "91.42"});
因此,如果需要,可以在服务器端进行更改,也可以从url中删除“
callback=?
”参数


这是

请保留URI幂等项。即使是ajax。这应该使用
$。post
。如果不这样做,实际上违反了HTTP规范。请保持URI幂等。即使是ajax。这应该使用
$。post
。当你不这么做的时候,它实际上违反了HTTP规范,这可能已经做到了…只是做了一个快速测试,并得到了一些东西。商店要关门了,所以我明天会在这方面做更多的工作,并尝试在我标记为已应答之前进行验证。是的,成功了,尽管还有其他电话使用回调,但没有失败…不确定这一个为什么会失败。Django正在生成响应。无论哪种方式,脚本都不需要跨域,因此我将此标记为已回答。非常感谢。这可能已经做到了…只是做了一个快速测试,并得到了一些回来。商店要关门了,所以我明天会在这方面做更多的工作,并尝试在我标记为已应答之前进行验证。是的,成功了,尽管还有其他电话使用回调,但没有失败…不确定这一个为什么会失败。Django正在生成响应。无论哪种方式,脚本都不需要跨域,因此我将此标记为已回答。非常感谢。