我试图将帖子保存到我的数据库,但是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);
}
});
答案 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而不是因某种原因而添加的额外内容。