Jquery Post Not Processing文件

时间:2015-10-30 12:09:36

标签: php jquery wordpress

当我的代码出现问题时,如果将永久链接设置为默认值以外的其他任何内容,则不会处理该文件。

<div id="thanks" class="modal fade" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true">
    <div class="modal-dialog">
    <div class="modal-content">
  <div class="modal-header">
        <button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button>
        <h4 class="modal-title">Redeem Points</h4>
    </div>
    <div class="modal-body">
     <form class="form-horizontal"  class="contact" name="commentform"  >
            <div class="form-group">
            <h3>You may only redeem the maxium points of : <?php echo $maxpoints;?></h3>
                <input type="hidden" name="playerid" value="<?php echo $playerId;;?>" />
                  <input type="number"  valuemax="<?php echo $maxpoints;?>" name="points" class="form-control" placeholder="How many points do you wish to redeem." />                  
                   <label class="control-label col-md-4" for="Comments">Comments?</label>
                <input type="text" name="comments" />

        </div>
        <div class="form-group">
                <div class="col-md-6">

                        <button class="btn btn-success" id="submit">submit</button>
      <a href="#" class="btn" data-dismiss="modal">Close</a>

                </div>
            </div>
        </form>
    </div><!-- End of Modal body -->
    </div><!-- End of Modal content -->
    </div><!-- End of Modal dialog -->
</div><!-- End of Modal -->

我认为初始问题是,但是当我关闭固定链接时它似乎工作正常我真的不知道问题在这里谢谢。上面的html位于文件/wp-content/themes/gogreensoccer5/kids-dashbaord.php以及下面的jquery我不知所措。

  

键入:&#34; POST&#34;,
     url:&#34; /bin/sendredeempoints.php" ;,

<script>
$('#thanks').modal('show').on('shown.bs.modal', function () {
        //Ajax Method Call starts here
            var points = $("#points").val();
        $("#send_btn").click(function () {
            var dataString = 'points=' + points;
            alert(dataString);//Remove this
            return false;//Remove this
         $.ajax({
             type: "POST",
             url: "/bin/sendredeempoints.php",
             data: $('form.contact').serialize(),
             success: function (msg) {
                 $("#thanks").html(msg)
                 $("#form-content").modal('hide');
             },
             error: function () {
                 alert("failure");
             }
         });
            //Ajax Method Ends
        }); //Click Function ends
    }); //Modal event Ends
</script>

不管是谁,都要停下来。

编辑

进一步了解

将此添加到我的函数中,但仍然没有找到文件: - (

function load_these_scripts()   {
      wp_register_script( 'your_script', get_bloginfo('template_directory').'js/redeempoints.js', false, false, true );
      wp_localize_script( 'my_ajax_script', 'myAjax', array( 'ajaxurl' => admin_url( 'admin-ajax.php' )));  
}

add_action("wp_ajax_php_function_name", "redeempoints");
add_action("wp_ajax_nopriv_php_function_name", "redeempoints");
function redeempoints() {

   // Some stuff here
   global $wpdb;
 //  $result = $wpdb->get_results( /* SQL code goes here */ );
   // Do something with $result
}   

                                 

您只能兑换最高积分:

                    &#34; /&GT;                       &#34;命名=&#34;点&#34;类=&#34;形状控制&#34;占位符=&#34;您希望兑换多少积分。&#34; /&GT;
                       评论?                     

        </div>
        <div class="form-group">
                <div class="col-md-6">

                        <button class="btn btn-success" id="submit">submit</button>
      <a href="#" class="btn" data-dismiss="modal">Close</a>

                </div>
            </div>
        </form>     

我的js文件

var formdata = $('form.contact').serialize();
var allData = {
   action: 'redeempoints',
   data: formdata
}

  jQuery.ajax({
     type : "post",
     dataType : "json",
     url : myAjax.ajaxurl,
     data : allData,
     success: function(response) {
        if(response.type == "success") {
           // Do something
        }
        else {
           // Do something else
        }
     }
  });

2 个答案:

答案 0 :(得分:1)

您需要更改使用AJAX和WordPress的方式:)

首先,在您的functions.php(或插件文件)中,您必须本地化admin-ajax.php并注册一个JS文件,您将在其中进行AJAX调用 - 如下所示:

add_action( 'wp_enqueue_scripts', 'load_these_scripts' );
function load_these_scripts()   {
      wp_register_script( 'your_script', 'URI_OF_JS_THAT_MAKES_THE_AJAX_CALLS/scripts.js', false, false, true );
      wp_localize_script( 'my_ajax_script', 'myAjax', array( 'ajaxurl' => admin_url( 'admin-ajax.php' )));  
}

然后在你的scripts.js中你需要像这样进行AJAX调用: 使用此而不是&#34;数据:&#34;

$("#send_btn").click(function () {
    var formdata = $('form.contact').serialize();
    var allData = {
       action: 'php_function_name',
       data: formdata
    }

      jQuery.ajax({
         type : "post",
         dataType : "json",
         url : myAjax.ajaxurl,
         data : allData,
         success: function(response) {
            if(response.type == "success") {
               // Do something
            }
            else {
               // Do something else
            }
         }
      });
});

action: "php_function_name"实际上告诉WP要调用哪个函数,但是你还需要注册。这样做,回到你的functions.php(或插件文件):

add_action("wp_ajax_php_function_name", "php_function_name");
add_action("wp_ajax_nopriv_php_function_name", "php_function_name");
function php_function_name() {

   // Some stuff here
   global $wpdb;
   $result = $wpdb->get_results( /* SQL code goes here */ );
   // Do something with $result
}

确保使用&#34; wp_ajax&#34;注册该功能。 &安培; &#34; wp_ajax_norpiv&#34;否则它只适用于登录用户。

干杯

答案 1 :(得分:0)

首先。这是一个ajax帖子。使用jquery发布它有点不同的http://api.jquery.com/jquery.post/

你的问题是关于在jquery中发布,而不是ajax。所以我们稍微修改你的代码:

    <script>
    $('#thanks').modal('show').on('shown.bs.modal', function () {
    var points = $("#points").val();
    $("#send_btn").click(function () {
                var dataString = 'points=' + points;
                alert(dataString);//Remove this
                return false;//Remove this

var url = "/bin/sendredeempoints.php";
var data = $('form.contact').serialize(),

        $.post( url, { data: data })
          .done(function() {
            $("#thanks").html(msg)
                 $("#form-content").modal('hide');
          }).fail({
alert("failure");
});


    });//Click Function ends
    }); //Modal event Ends
        </script>

使用ajax发布是一个痛苦的屁股。既然有Jquery .post()就很容易了。修改是否不正确。如果有帮助,请告诉我。

我看到你使用alert()。请改用console.log()。没有烦人的弹出窗口。您可以在开发人员工具控制台中查看数据。

<强> EDIT2

您收到的错误表示您的网址不正确。您正尝试发布到文件而不是网址 我想你有一个索引文件或包含其他文件的文件。 在包含此脚本的文件中输入一些php代码。 php脚本在url中检查数据是否为true。

 <?php
    if(isset($_POST['data']) AND $_GET['data'] == 'true'){
    //Go to your php file. or include it.
//EXAMPLE
     include "/bin/sendredeempoints.php";
//On the sendredeempoints you can do whatever you want with the post.
    }
    ?>

将var url更改为:

var url = "YOURWEBSITE.com?data=true"; // or the easy one
var url = window.location.href + "?data=true";