新しいオブジェクトをJSONとしてポストする長いポーリング操作がありますが、オブジェクトを返す更新を取得しているときに無効なJavaScriptオブジェクトがあるようです有効なJSONまたはJavaScriptオブジェクトを解析する
{'body': 'hello world', 'html': '\n<div class="message" id="md1f1cdab-3c3a-4dfe-b268-834aa9981dec"><b>burakdede: </b>hello world</div>\n', 'from': 'burakdede', 'id': 'd1f1cdab-3c3a-4dfe-b268-834aa9981dec'}
応答が出てくる前に、私はJavaScriptのオブジェクトにそれを回すためにeval("(" + response + ")")
を使用しています:ここで私は更新しましたconsole.log
あるjQueryで解析し、それが有効なJavaScriptオブジェクトではありませんので、私は中に到達することはできません。新しいメッセージの投稿と更新の取得には、showメッセージが使用されます。新しい投稿でうまく動作しますが、レスポンスが出てきたらエラーになります。
var updater = {
errorSleepTime: 500,
poll: function() {
var args = {"_xsrf": getCookie("_xsrf")};
args.listing_id = $(".action").attr("id");
$.ajax({url: "https://stackoverflow.com/a/message/updates", type: "POST", dataType: "text",
data: $.param(args), success: updater.onSuccess,
error: updater.onError});
},
onSuccess: function(response) {
try {
updater.newMessages(eval("(" + response + ")"));
} catch (e) {
updater.onError();
return;
}
updater.errorSleepTime = 500;
window.setTimeout(updater.poll, 0);
},
onError: function(response) {
updater.errorSleepTime *= 2;
console.log("Poll error; sleeping for", updater.errorSleepTime, "ms");
window.setTimeout(updater.poll, updater.errorSleepTime);
},
newMessages: function(response) {
if (!response.messages) return;
var messages = response.messages;
//console.log(messages.length, "new messages, message is :", messages);
updater.showMessage(messages);
},
showMessage: function(message) {
var existing = $("#m" + message.id);
if (existing.length > 0)return;
var node = $(message.html);
node.hide();
$("#inbox").append(node);
node.slideDown();
},
};
function newMessage(form) {
var message = form.formToDict();
var disabled = form.find("input[type=submit]");
disabled.disable();
$.postJSON("https://stackoverflow.com/a/message/new", message, function(response) {
updater.showMessage(response);
if (message.id) {
form.parent().remove();
} else {
form.find("input[type=text]").val("").select();
disabled.enable();
}
});
}
ではなく、クライアント側で固定し、私は、サーバー側のコードを固定し、それが今取り組んでいます。問題は、適切なJSONを生成できないということでした。
どのような種類のエラーがありますか? – FK82