2016-06-15 13 views
1

私はMatt Van Andel's Custom List Table Exampleに続いて、外部MySqlデータベースを介してウェブサイトへの問い合わせを表示する管理テーブルを作成しました。AJAXがWordpressカスタムテーブルでmySQLを更新する

私のデータの表示を正しく実装したので、管理者が問い合わせのステータス(応答待ち、返答など)を更新できるようにする選択ボックス列を追加しました。データベースを更新するために必要ですAJAX経由。

データベースを新しい値で更新するAJAX呼び出しをトリガーするには、これらの選択ボックスを変更する必要がありますが、外部AJAXファイルをプラグイン.phpファイルに正しくリンクするのに苦労しているようです。

私は(ネットワーク]タブで)私は.jsファイルはそうのようなファイルのロードしています見ることができるポイントに達している:リストtable.phpに

コード:

function ajax_test_enqueue_scripts() { 
     wp_enqueue_script('list-table', plugins_url('js/list-table.js', __FILE__), array('jquery')); 
    } 
    add_action('admin_enqueue_scripts', 'ajax_test_enqueue_scripts'); 

そして、私のAJAX:

jQuery('.status-select').on('change', function ajaxSubmit() { 

    alert("IT WORKED!"); 

     $.ajax({ 
     url: ajaxurl,  
     type: "POST", 
     cache: false, 
     data: this.val() 

    }) 
}); 

現時点でファイルが表示されているが、「変更の」の部分は、(.jsファイル内したがって、「警告」)を発射していないようです。

謝罪この質問には言葉遣いが不十分な場合は、初めての投稿です!

誰かが何がどこで間違っているのかを説明できることを願っています。

答えて

0

これは非常に特殊な要件ですが、WordPressでカスタムテーブルを使用していて、AJAX経由で外部myqslデータベースを更新したい場合は、ここで行っています。

物事のAJAX側 -

 <script> 
    jQuery('select.status').on('change', function() { 

     var $statusSelect = jQuery(this); 
     var $statusSelectCell = $statusSelect.parent(); 
     var enquiryStatusValue = $statusSelect.val(); 
     var currentBackgroundColor = $statusSelectCell.parent().css("backgroundColor"); 

     var ajaxData = { 
       'action': 'update_status_db', 
       'currentId': $statusSelect.attr('id'), 
       'data': enquiryStatusValue 
     } 

     jQuery.ajax({ 

      type: "POST", 
      url: "/wp-admin/admin-ajax.php", 
      data: ajaxData, 
      success: function(response) { 
       console.log("Data returned: " + response); 
       $statusSelectCell.parent().css({"background-color": "#b3e6b3"}); 
       $statusSelectCell.parent().animate({backgroundColor: currentBackgroundColor}, 1200); 
      }, 
      error: function() { 
       alert("FAILED TO POST DATA!!"); 
      } 

     }); 

    }) 
</script> 

注、この場合はユーザーの成功の確認が緑色に点滅する特定の行のためです。これはオプションです。

次は、AJAXリクエストを処理するPHPです。これはテーブルクラスの外側に書かれます。

wp_enqueue_script('jquery'); 

add_action( 'wp_ajax_update_status_db'、 'update_status_db_callback')。

関数update_status_db_callback(){

global $wpdb; 

$newStatus = $_POST['data']; 
$currentId = $_POST['currentId']; 
$table = 'wp_enquiryinfo'; 
$result = $wpdb->update($table, array('status' => $newStatus), array('id' => $currentId)); 

echo $_POST['data']; 

if (!$result) { 
    echo "FAILED TO UPDATE"; 
} else { 
    $result; 
    echo "WILL UPDATE SUCCESSFULLY - CALL RESULT FUNCTION"; 
}; 

wp_die(); 

}

は、ここで私が間違っもともとなっていた物事のカップルです: まず、コールバック関数が_callbackで終了する必要があります。第二に、私はwp_die関数を最後に呼び出さなかった - これはもう一度必要です。

これは今後の予定です。

+0

注:私の元の質問では、外部ファイルへのリンクに問題があると述べました。私は1つの.phpファイルにプラグインコード全体を持っていたので、必ずしも問題を解決していないだけで問題は解決しました。 – helenkitt

関連する問題