126

jQuery v1.7.2

実行中に次のエラーが発生するこの機能があります。

Uncaught TypeError: Illegal invocation

関数は次のとおりです。

$('form[name="twp-tool-distance-form"]').on('submit', function(e) {
    e.preventDefault();

    var from = $('form[name="twp-tool-distance-form"] input[name="from"]');
    var to = $('form[name="twp-tool-distance-form"] input[name="to"]');
    var unit = $('form[name="twp-tool-distance-form"] input[name="unit"]');
    var speed = game.unit.speed($(unit).val());

    if (!/^\d{3}\|\d{3}$/.test($(from).val()))
    {
        $(from).css('border-color', 'red');
        return false;
    }

    if (!/^\d{3}\|\d{3}$/.test($(to).val()))
    {
        $(to).css('border-color', 'red');
        return false;
    }

    var data = {
        from : from,
        to : to,
        speed : speed
    };

    $.ajax({
        url : base_url+'index.php',
        type: 'POST',
        dataType: 'json',
        data: data,
        cache : false
    }).done(function(response) {
        alert(response);
    });

    return false;
});

dataajax呼び出しから削除すると動作します..何か提案はありますか?

ありがとう!

4

10 に答える 10

125

データ値として文字列が必要だと思います。To & From オブジェクトを正しくエンコード/シリアル化していない jQuery 内部の何かである可能性があります。

試す:

var data = {
    from : from.val(),
    to : to.val(),
    speed : speed
};

次の行にも注意してください。

$(from).css(...
$(to).css(

To & From はすでに jQuery オブジェクトであるため、jQuery ラッパーは必要ありません。

于 2012-04-25T22:27:13.540 に答える
0

私の問題は とは無関係でしたprocessDataapply十分な引数がなく、後で呼び出すことができない関数を送信したためです。具体的には、コールバックalertとして使用すべきではありませんでした。error

$.ajax({
    url: csvApi,
    success: parseCsvs,
    dataType: "json",
    timeout: 5000,
    processData: false,
    error: alert
});

それが問題になる理由の詳細については、この回答を参照してください: JavaScript で特定の関数呼び出しが「不正な呼び出し」と呼ばれるのはなぜですか?

これを発見する方法は、console.log(list[ firingIndex ])jQuery に a を追加することでした。

これは修正でした:

function myError(jqx, textStatus, errStr) {
    alert(errStr);
}

$.ajax({
    url: csvApi,
    success: parseCsvs,
    dataType: "json",
    timeout: 5000,
    error: myError // Note that passing `alert` instead can cause a "jquery.js:3189 Uncaught TypeError: Illegal invocation" sometimes
});
于 2016-04-14T19:34:50.943 に答える