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"/> <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>