-1

問題は、POST が情報を PHP スクリプトに送信していないように見えることです。firebug コンソールには、情報が JavaScript から渡されたものであり、適切にフォーマットされているように見えますが、応答が得られず、PHP スクリプトも実行されていません。

ただし、PHP 自体は問題なく動作します。

Jクエリ:

$(function(){
        $('#submit-item').live("click",function(){
            var productName = $(".add-item-form #productName").val();
            var category = $(".add-item-form #categorySelect").val();
            var brandName = $(".add-item-form #brandName").val();
            var volume = $(".add-item-form #volumeType").val();


            $.post("addNewProduct.php",{productName:productName ,category: category, brandName: brandName, volume: volume});
        });
    });

そして HTML フォーム:

<section id="add-item-pane" class="secondary">
    <header>
        <h1>add item</h1>
        <a href="#" class="close-secondary"></a>
    </header>
    <form class="add-item-form" method="POST" action="" accept-charset=utf-8>
        <div class="input">
            <label for="productName">product name</label>
            <input type="text" name="productName" id="productName" placeholder="Product Name">
        </div>
        <div class="input">
            <label for="categorySelect" required>category</label>
            <select name="categorySelect" id="categorySelect" placeholder="Category" required>
                <option value="1">ATERIA-AINEKSET JA KASTIKKEET</option>
            </select>
        </div>
        <div class="input">
            <label for="brandName">brand name</label>
            <input type="text" name="brandName" id="brandName" placeholder="Brand Name">
        </div>
        <div class="input">
            <label for="volumeType">volume type</label>

            <label for="volumeTypeKG">g/kg</label>
            <input type="radio" name="volumeType" id="volumeType" value="1">
            <label for="volumeTypeL">ml/l</label>
            <input type="radio" name="volumeType" id="volumeType" value="2">

        </div>

        <input type="submit" value="Add it" id="submit-item">


    </form>
</section>

受信 PHP:

$productName =  $_POST['productName'];
$categoryId =  $_POST['category'];
$brandId =  $_POST['brandName'];
$volumeId =  $_POST['volume'];
4

1 に答える 1

0

あなたのコードにはいくつかのバグがあります:

1) 同じidを持つ 2 つの入力があります。定義上、ID はページ内で一意である必要があります。

<input type="radio" name="volumeType" id="volumeType" value="1">
<input type="radio" name="volumeType" id="volumeType" value="2">

選択したラジオの値を取得する場合は、「myRadioGroup」などの各ラジオ ボタンに CSS クラスを追加し、次のように値を取得する必要があります。

$(".myRadioGroup:checked").val()

2)それ自体を指しているフォーム(action="")があり、input type="submit". 「追加」ボタンをクリックすると、リスナーはジョブを開始しますが、フォームを送信して同じページをリロードする送信イベントを停止しません。

あなたを置き換えてみてください:

<input type="submit" value="Add it" id="submit-item">

送信イベントを開始しない単純なボタンを使用します。

<button type="button" id="submit-item">Add it</button>

さらに、データをシリアル化するためにフォームを使用しないため、このフォームは役に立ちません。フォームも削除できます。

ボタンをクリックしても何も送信されず、AJAX 呼び出しが送信されます。

于 2012-10-18T23:38:08.290 に答える