2017-05-03 3 views
1

申し訳ありません。私はなぜ私がUncaught TypeError: Illegal invocationワードプレスの私のAJAX要求にエラーが発生するのかわかりません。ワードプレスのajaxリクエストで不正な呼び出しエラー(processDataが設定されていないと設定されていてアクションハンドラが見つからない場合)

このコード作品

JS

function updateDB(){ 
    $.ajax({ 
     url: '/wp-admin/admin-ajax.php', 
     type: 'POST', 
     data: { 
      action: 'det_lilla_exta 
     }, 
    }); 
} 

PHP(サーバスクリプト)

<?php 

add_action('wp_ajax_det_lilla_extra', 'det_lilla_extra'); 
add_action('wp_ajax_nopriv_det_lilla_extra', 'det_lilla_extra'); 
function det_lilla_extra(){ 

    echo "hi"; 

} 

しかし、私は私のjsを変更した場合は(後で経由で画像を送信することができるようにしますfromデータオブジェクト)

JS

function updateDB(){ 
    var formData = new FormData(); 
    formData.append('action', 'det-lilla-extra'); 
    $.ajax({ 
     url: '/wp-admin/admin-ajax.php', 
     type: 'POST', 
     data: formData, 
    }); 
} 

次に、Uncaught TypeError: Illegal invocationエラーが発生します。私はいくつかのgoogleingを行って、あなたのデータが文字列に変換されないようにするには、processDataパラメータをfalseにする必要があることを発見しました。

function updateDB(){ 
    var formData = new FormData(); 
    formData.append('action', 'det-lilla-extra'); 
    $.ajax({ 
     url: '/wp-admin/admin-ajax.php', 
     type: 'POST', 
     data: formData, 
     processData: false 
    }); 
} 

をしかし、今、私はそれが私のactionハンドラを見つけることができないことを意味し、私のwordpressのPHPスクリプトから0を受け取る:同じようにここで行わ。

ここで何をすべきかわかりません。それとも本当に間違っているのか。何か案は?

(私のコードを貼り付けてコピーしていないので、多少の構文エラーがあるかもしれませんが、私はではありません。は私のオリジナルコードに構文上の間違いがあります)。

+0

'contentType'パラメータを** false **に設定してみてください。 – Wizard

+0

@Wizard既に試しました。変化なし。 – vonhact

答えて

0

問題は、私はこれは、ワードプレスでAJAXリクエストを経由して画像を送信するための実用的なソリューションでなければなりませんenctype: 'multipart/form-data',

//update database with posted values 
function updateDB(){ 

    var fd = new FormData(); 
    fd.append('action', 'det_lilla_extra'); 
    fd.append('image', $('#fileInput').prop('files')[0]); 

    $.ajax({ 
     url: '/wp-admin/admin-ajax.php', 
     type: 'POST', 
     data: fd, 
     enctype: 'multipart/form-data', 
     contentType:false, 
     processData:false, 
    }); 
}; 

をicludingていなかったということでした。

+0

jQuery $ .ajaxに 'enctype'パラメータがありません。'

'タグに' enctype = "multipart/form-data"を入れてください。 – Wizard

関連する問題