我的页面上有一个表单:
<form id="extended-search" >
<div class="input-container">
<select class="select" name="sex" id="sex">
<option value="0">All</option>
<option value="1">M</option>
<option value="2">F</option>
</select>
</div>
<input type = "button" class="searchButton" value = "Show" onClick="submitSearch();">
<img id="loading" src="img/ajax-loader.gif" alt="working.." />
</form>
jQuery代码在同一页面上:
function submitSearch() {
var submitSearchData = jQuery('#extended-search').serialize();
var selectedValue='<?php echo $_POST['sex'];?>' ;
jQuery.ajax({
type: "POST",
data: submitSearchData,
url: "feed.php",
success: function () {
alert(submitSearchData);
alert(selectedValue);
}
});
}
一切正常(第一次警报返回,例如,性别= 1,但第二次为空)很好,但$_POST['sex']
为空。我一直在努力:
使用:
jQuery(document).ready(function(){
jQuery('.searchButton').click(function(){
submitSearch();
});
});
从AJAX中移除url: "feed.php",
。
制作:data: {sex: submitSearchData},
在AJAX中添加和更改dataType
。
但一切都还是一样的。 $_POST['sex']
仍然是空的。如何在同一页面上通过AJAX传递$_POST var($_POST['sex'])
?
答案 0 :(得分:0)
使用此代码获取所选选项
var selectedValue=$('#sex').val();
因为您没有提交表单,因此您没有获得$_POST['sex']
价值。您必须使用jquery
或jaavscript
来获取当前选定的选项。
答案 1 :(得分:0)
这一行:
var selectedValue='<?php echo $_POST['sex'];?>';
不会做你似乎期望它做的事情。只有在单击按钮时才会调用submitSearch()
函数(两次,但稍后会更多)。当你POST
到你的PHP时,JavaScript没有被执行(因为没有点击事件),当你的JavaScript被调用时,$_POST['sex']
没有被设置为任何东西。
您可以像这样获得PHP在JavaScript中返回的内容:
jQuery.ajax({
type: "POST",
data: submitSearchData,
url: "feed.php",
success: function(data) {
alert("response from PHP: " + data);
}
});
所以如果你的feed.php看起来像这样:
<?php
if(isset($_POST['sex'])):
switch ($_POST['sex']) {
case 0:
echo "You didn't select anything";
break;
case 1:
echo "You selected male";
break;
case 2:
echo "You selected female";
break;
}
else:
?>
// all your HTML
<?php endif; ?>
然后alert
将返回response from PHP: You selected male
(或You didn't select anything
或You selected female
),具体取决于所选内容。
由于您已经在<head>
中使用jQuery将Click单击绑定到您的按钮,因此您的HTML应该只有:
<input type = "button" class="searchButton" value = "Show" />
否则会拨打submitSearch()
两次。