Ajax调用成功,但错误块正在执行

时间:2015-09-20 03:25:41

标签: javascript jquery json ajax

我试图将帖子保存到我的数据库,但是ajax错误块正在执行。它在回复中表示确定,所以我查看了其他一些问题,看起来我没有返回Json对象,所以我尝试了一些事情:

创建一个NameValule变量并添加(" Success"," true")并通过Json.Encode(NameValue)将其转换为Json;

以Json格式返回一个字符串:" {\"结果\":[{\"成功\":\" true \ "}]}&#34 ;;

将dataType更改为" text json" "文本/ JSON"

错误块仍然出于某种原因,任何想法?

word = input("Enter the word to search : ")
with open(file) as f:
    for line in f:
        m = line.strip().split()
        if m[0] == word:
            print m[1]

以下是回复页面:

//Save it all in an object to be passed in ajax 
    var Post = {
        Id: postID,
        Title: postTitle.val(),
        Author: postAuthor,
        Date: postDate,
        Content: postContent.val(),
        metaDescription: metaDescription.val(),
        metaKeywords: metaKeywords.val(),
        metaID: metaId.text(),
        Page: $(document).attr('title')
    };
//save to database 
        $.ajax({
            url: url,
            type: 'POST', 
            dataType: "text json",
            data: { data: JSON.stringify(Post) },
            success: function (result) {
                console.log("result: " + result);
                if (result == "Success") {
                   // postContent.append("<br/><p>Edit Successful!</p>");
                    alert('Edit successfull');
                   //window.location.replace(window.location.href);
                }
                else {
                    postContent.replaceWith("<div>" + result + "</div>");
                }                    
            },
            error: function (xhr, status) { 
                console.log('ajax error = ' + xhr.statusText);
            }
        });  

3 个答案:

答案 0 :(得分:0)

在不知道网址要求的情况下无法确定。我的猜测是数据属性是你关闭的原因。我猜Post是其他地方定义的对象。发送请求时,服务器可能会将数据字段解释为对象而不是字符串。尝试将{data: JSON.stringify(Post)}更改为JSON.stringify(Post)

答案 1 :(得分:0)

问题在于您的JSON响应。

"{ \"Result\":[{\"Success\":\"true\"}]}";

在双引号之前添加了斜杠(&#34;)。

您可以使用以下更新的错误块看到jQuery抛出的实际错误:

error: function (xhr, status, errorThrown ) {
        console.log(errorThrown ) 

解决方案:

从您的回复中删除斜杠尝试回复,如下所示:

'{ "Result":[{"Success":"true"}]}'

希望这会对你有所帮助。

此致

答案 2 :(得分:0)

对于其他可能遇到同样问题的人,我最终解决了这个问题:只需使用Html.Raw(结果)只返回json而不是因某种原因而添加的额外内容。