如何传递jQuery AJAX URL值

时间:2017-06-06 作者:Jay Kapoor

我是WordPress的新手。我有一个这样的jQuery代码。。。在我的header.php 文件

jQuery(document).ready(function(){
   jQuery("#wp-submit").click(function(){  
      username=jQuery("#userName").val();
      password=jQuery("#passWord").val();
      jQuery.ajax({
       type: "POST",
       url: "<?php echo "http://" . $_SERVER[\'HTTP_HOST\'] . $_SERVER[\'REQUEST_URI\']; ?>",
      data: "name="+username+"&pwd="+password,
       success: function(html){    
      if(html==\'true\')    {
       jQuery("div#result").css(\'display\', \'inline\', \'important\');
       jQuery("div#result").html("Login Successful");
       console.log(\'true\');
      }
      else{
       jQuery("div#result").css(\'display\', \'inline\', \'important\');
       jQuery("div#result").html("Wrong username or password");
      }

       } });
    return false;
  });
});
下面是同一个文件(header.php)中的php代码:

   <?php 
      $uName = $_POST[\'name\'];
      $pWord = md5($_POST[\'pwd\']);
      $results= $wpdb->get_results("select * from wp_users where user_email=\'".$uName."\' and user_pass=\'".$pWord."\'");
      if(count($results)==1)
      {
       echo \'true\'; 
      }

      else {
        echo \'false\';
      }
我无法向服务器发送请求,我遇到了404错误。

我做错了什么?

1 个回复
最合适的回答,由SO网友:Bikash Waiba 整理而成

Ajax url应设置为wp-admin/admin-ajax.php 因为ajax请求应该通过wp-admin/admin-ajax 在wordpress中。如果未定义ajaxurl,则可以通过定义html属性来获得它data-urldata-url="<?php echo get_admin_url().\'admin-ajax.php\'?>".

jQuery(document).ready(function($){
   $("#wp-submit").on(\'click\',function(e){
      e.preventDefault();
      username = $("#userName").val();
      password = $("#passWord").val();
      ajaxurl  = $(this).data(\'url\');
      $.ajax({

      type: "POST",
      url: ajaxurl,
      data : {

            name     : username,
            password : password,
            action   : \'check_user_login\'

        },
       success: function(response){    
         if(response ==\'true\')    {
             $("div#result").css(\'display\', \'inline\', \'important\');
             $("div#result").html("Login Successful");
             console.log(\'true\');
         }else{
            $("div#result").css(\'display\', \'inline\', \'important\');
            $("div#result").html("Wrong username or password");
         }

       } 
    });
  });
});
现在将ajax函数创建为

function user_login(){


   //do your stuff here
    global $wpdb;
    $username=$_POST[\'name\']; 
    $password=$_POST[\'password\']; 
    $hash = md5($password);
    $query = $wpdb->prepare( "SELECT * FROM `wp_users` WHERE `user_email` = %s AND `user_pass` = %s", $username, $hash );
    $result = $wpdb->get_results($query);
     if (count($result)==1) { echo \'true\';
     echo \'<span>Login Successful</span>\'; exit(); 
    } else if(count($result) < 1) {
     echo \'false\'; exit(); }
}
现在,ajax函数应该挂接到钩子上wp_ajax_*wp_ajax_nopriv_*. 这里,*是您的行动价值,即数据。使其成为

 add_action(\'wp_ajax_nopriv_check_user_login\',\'user_login\');
 add_action(\'wp_ajax_check_user_login\',\'user_login\');

结束

相关推荐

执行AJAX请求总是输出0

我正在尝试从我的主题中执行ajax请求header.php 文件我读到我必须使用admin-ajax.php 文件来实现这一点。所以我找了一些例子this 一中的我的代码header.php 文件如下所示:<script> $(document).ready(function(){ $(\'.test a\').click(function(){ var className = $(this).attr(\'class\');