Ajax向同一页面发送空值

时间:2012-10-13 01:19:45

标签: php jquery html ajax

我的页面上有一个表单:

<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'])

2 个答案:

答案 0 :(得分:0)

使用此代码获取所选选项

var selectedValue=$('#sex').val();

因为您没有提交表单,因此您没有获得$_POST['sex']价值。您必须使用jqueryjaavscript来获取当前选定的选项。

答案 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 anythingYou selected female),具体取决于所选内容。

由于您已经在<head>中使用jQuery将Click单击绑定到您的按钮,因此您的HTML应该只有:

<input type = "button" class="searchButton" value = "Show" />

否则会拨打submitSearch()两次。