我为ajax请求做了一个自定义的调节器。
问题是我一直收到此错误吗?
未捕获的TypeError:无法在“窗口”上执行“ postMessage”:需要1个参数,但只有0个。
该行指向$.ajax({
。
HTML:
<input class="image_title" />
<span class="the_title"></span>
JS:
$(function() {
var aj_count = 0;
var aj_flag = false;
var aj_flag2 = false;
var run_on = -1;
setInterval(function() {
aj_count++;
if (aj_flag === true) {
run_on = aj_count + 250;
aj_flag = false;
aj_flag2 = true;
}
if (run_on < aj_count && aj_flag2 === true) {
var $t = $(this);
var daid = $('.image_id').val();
aj_flag2 = false;
$.ajax({
type: "POST",
url: '/ajax/set_title.php',
data: {
'title' : $t,
'id' : daid
},
success: function(data) {
var data = JSON.parse(data);
$('.the_title').html( '<small>Title:</small> <strong>' + data.title + '</strong>' );
}
});
}
}, 1);
$('.image_title').on('input', function(e) {
aj_flag = true;
e.preventDefault();
return false;
});
$('.image_title').on('keydown', function(e) {
if (e.which == 13) {
e.preventDefault();
return false;
}
});
});
如您所见,我已经尝试将直接形式的val移到变量等中,但是我无法使其正常工作。当我用console.log替换ajax部分时,它会按预期运行。我一直在环顾四周,但由于ajax已将数组传递给它,所以我仍然不太明白该错误的含义。
谢谢您的时间
答案 0 :(得分:1)
该错误可能是由于
var $t = $(this);
您正尝试通过{p>发送$t
作为title:
参数的值
data: {
title: $t,
id: daid
},
但是jQuery对象无法序列化为POST参数。
您需要将$t
设置为适当的标题字符串。我不知道您的应用程序在哪里,但这应该可以解决它。