0

AJAX を使用して wordpress 内でクエリ文字列を渡そうとしています。get と post を使用して、ネット上でさまざまなコードを試しました。ただし、PHP 内でパラメーターを取得できません。

ページ内で JavaScript を使用すると機能しますが、回避したいページがポストバックされます。助言がありますか?

ポストバックを使用した作業コード:

self.location = "?q=" + postcode;

また

jQuery.param.querystring(location.href= "?q=" + postcode);

PHP で $_POST['q'] を使用した ajax クエリがパラメータを取得しない

jQuery.ajax({
        type: 'POST',
        url:  'wp-admin/admin-ajax.php' ,
        data: {"q": postcode},
        success: function(data){jQuery('#results').val(postcode);}
    });

ありがとう

ジェマ

これにはまだ問題があり、クエリ文字列をphpに入れることができません:

class PostcodeChecker extends WP_Widget {
      function PostcodeChecker() {
                $widget_ops = array(
                'classname' => 'PostcodeChecker',
                'description' => 'Checks if valid postcode in database before request button enable'
      ); 

      $this->WP_Widget(
                'PostcodeChecker',
                'Postcode Checker',
                $widget_ops
      );

}

      function widget($args, $instance) { // widget sidebar output
                extract($args, EXTR_SKIP);
                echo $before_widget; // pre-widget code from theme
                print ('<h2 class="blocktitle">Postcode Checker</h2> ');
                print ('<input type="text" id="txtPostcode"/> &nbsp;&nbsp;<input id="btnRegister" type="button" disabled="disabled" value="request application form" />');

                print ('<br/><input type="text" id="results"></div><br/>');
                $postcode = $_GET['q'];

                print $postcode;
                $mysqli= mysqli_connect('localhost','root', 'My5ql5s5s');

                if (mysqli_connect_errno()) {
                    printf("Connect failed: %s\n", mysqli_connect_error());
                    exit();
                }

            // A QUICK QUERY ON A FAKE USER TABLE
                $query = "SELECT * FROM db_wp_webteam1.wp_bduk_towns where town_postcode='BT11ER'";
                $result = $mysqli->query($query) or die($mysqli->error.__LINE__);


            // GOING THROUGH THE DATA
                if($result->num_rows > 0) {
                    //while($row = $result->fetch_assoc()) {
                    //  echo stripslashes($row['town_postcode']);   
                    //}
                    echo 'Results found';
                }
                else {
                    echo 'NO RESULTS';  
                }

            // CLOSE CONNECTION
                mysqli_close($mysqli);

                echo $after_widget; // post-widget code from theme
      }

}

function add_js_to_wp_footer(){ ?>
<script type="text/javascript">
jQuery('#txtPostcode').keyup(function(){
    var postcode = jQuery(this).val();
    postcode = postcode.replace(/\s+/g, '');
    if (postcode.length >= 5)
    {
    //self.location = "?q=" + postcode;
    jQuery('#txtPostcode').keyup(function(){
    var postcode = jQuery(this).val();
    postcode = postcode.replace(/\s+/g, '');
    if (postcode.length >= 5)
    {
    jQuery.ajax({
        type: 'POST',
        url:  'wp-admin/admin-ajax.php' ,
        data: {"q": postcode},
        success: function(data){jQuery('#results').val(data);}
    });
    }
return false;
});

    }
return false;
});
</script>
4

0 に答える 0