无法在Ajax的窗口上执行postMessage

时间:2020-03-20 05:18:38

标签: javascript ajax

我为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;
    }
});

});

enter image description here

如您所见,我已经尝试将直接形式的val移到变量等中,但是我无法使其正常工作。当我用console.log替换ajax部分时,它会按预期运行。我一直在环顾四周,但由于ajax已将数组传递给它,所以我仍然不太明白该错误的含义。

谢谢您的时间

1 个答案:

答案 0 :(得分:1)

该错误可能是由于

        var $t = $(this);

您正尝试通过{p>发送$t作为title:参数的值

data: {
    title: $t,
    id: daid
},

但是jQuery对象无法序列化为POST参数。

您需要将$t设置为适当的标题字符串。我不知道您的应用程序在哪里,但这应该可以解决它。