1

私のページにフォームがあります:

<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);
            }
        });
    }

すべてが機能します (たとえば、最初のアラートは sex=1 を返しますが、2 番目のアラートは空です) 正常ですが、$_POST['sex']空です。私は試してきました:

使用するには:

jQuery(document).ready(function(){

    jQuery('.searchButton').click(function(){            
        submitSearch();
    });
});

削除するには: url: "feed.php",AJAX から。

作る:data: {sex: submitSearchData},

dataTypeAJAXで追加・変更する。

しかし、すべてはまだ同じです。$_POST['sex']はまだ空です。$_POST var($_POST['sex'])同じページで AJAXを通過するにはどうすればよいですか?

4

2 に答える 2

0

このコードを使用して、選択したオプションを取得します

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

$_POST['sex']フォームを送信していないため、価値が得られません。現在選択されているオプションを取得するには、jqueryまたはを使用する必要があります。jaavscript

于 2012-10-13T02:26:33.227 に答える
0

この行:

var selectedValue='<?php echo $_POST['sex'];?>';

あなたが期待しているように見えることはしません。このsubmitSearch()関数は、ボタンがクリックされたときにのみ呼び出されます (2 回ですが、後で詳しく説明します)。PHPにPOSTアクセスしても、JavaScript は実行されず (クリック イベントがないため)、JavaScript が呼び出さ$_POST['sex']れても、何も設定されません。

次のように、JavaScript で PHP が返すものを取得できます。

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 maleYou didn't select anythingYou selected female

<head>HTMLでjQueryを使用してボタンにクリックを既にバインドしているため、次のようにする必要があります。

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

そうしないと、submitSearch()2 回呼び出されます。

于 2012-10-13T02:32:27.533 に答える