在WordPress中使用AJAX显示用户输入

时间:2014-03-30 作者:Morty

我想用ajax显示用户输入。但仍然是执行功能fail 在js文件中。我不知道问题出在哪里。我读过http://codex.wordpress.org/AJAX_in_Plugins 我看到了http://pippinsplugins.com/using-ajax-your-plugin-wordpress-admin/

EDIT:我给了e.preventDefault(); 在js中jquery代码的顶部。它的作品(我收到了来自php文件的消息)。但是我不知道这个代码怎么可能对我有用。

主文件中的我的表单

 <div id="wrap">
            <div id="chat" >
            </div>
            <div id="message"> 
                <form method="post" action="" id="sendformtoDB">
              <input  type=\'text\' id="text" name="text"/> 
              <input id=\'send\' type=\'submit\' name="send"  class="button-primary" value=\'Submit\' />
                </form>
            </div>
          </div>

在我的构造函数中添加\\u操作

add_action(\'wp_ajax_InsertIntoDB\',array($this,\'InsertIntoDB\'));
add_action(\'wp_ajax_nopriv_InsertIntoDB\',array($this,\'InsertIntoDB\'));
我首先加载jquery库和我的js文件

 public  function load_scripts() {
       wp_register_script( \'jquery\', plugins_url( \'jq/jquery.js\', __FILE__ ));
       wp_enqueue_scripts(\'jquery\');
        wp_register_script( \'sendToDB\',  plugins_url(\'jq/sendToDB.js\',__FILE__ ),array( \'jquery\' ));
        wp_enqueue_script(\'sendToDB\');
        wp_localize_script( \'sendToDB\', \'MyAjax\', array( \'ajaxurl\' => admin_url( \'admin-ajax.php\')));
    }
php文件

   public function InsertIntoDB(){
       if(isset($_POST[\'message\'])){
     $messages=$_POST[\'message\'];  
    # global $wpbdb;
     /* $wpbdb->insert(\'wp_userlogin\',
              array(
                 "message"=>$message   
              ),
              array(
                  \'%s\'
              )
              );*/
     echo "$messages";
       }
        die();       
    }
js文件

jQuery( document ).ready( function($) {      
    $( " #sendformtoDB" ).submit( function() {
        var text;
         text = $( "#text" ).val();
         console.log(text);
  $.ajax({
     type: \'POST\',
     url: MyAjax.ajaxurl,
     data:{"action":\'InsertIntoDB\',message:text},
     success:function(msg){
         alert(msg);
     }
    //  $(\':input\').not(":submit").val(\'\'); 
   })

  .fail(function( jqXHR, textStatus ) {
     alert( "Request failed: " + textStatus+jqXHR );
     });
 } );
} );

1 个回复
SO网友:rram

我没有足够的声誉发表评论。尝试为ajax调用提供数据类型,这可能是由于json错误造成的。

尝试将数据类型作为html添加到ajax中进行测试,然后可以从以下内容进入工作路径

   $.ajax({
     type: \'POST\',
     url: ajaxurl,
     dataType: "html",
     data:{"action":\'InsertIntoDB\',message:text},
     success:function(msg){
         alert(msg);
     }
也可以试试看ajaxurl 在url字段中,而不是MyAjax.ajaxurl 即使指定数据类型也没有帮助,否则不要弄乱url。试试上面的方法,让我知道你在firebug中得到了什么反应。

结束

相关推荐

WordPress插件:admin-ajax.php不向自定义函数传递数据

在这个基本的插件框架中,我试图获得ajax发送给wordpress admin ajax的数据。要由自定义函数处理的php。从表单发送的数据似乎没有到达我的ea\\u ajax\\u handler()函数。它似乎到达了管理ajax。php(表单数据由jQuery收集,然后我得到一个200响应,用于管理ajax.php的post请求),但看起来它没有转发给ea\\u ajax\\u handler()。以下是我的文件:easyA。php:/** Enqueue scripts */ add_act