2016-04-06 16 views
0

私は非常にPHP & AJAXを新しく導入しました。私はHTMLに2つのサブミットボタンを持っており、ajax serialize()やajaxを使ってPHPファイルに/からいくつかの値を渡したり抜いたりしています。問題は、serialize()がどのボタンが使われているかを区別することができないということです。PHPファイルの問題を作り出している「拒否」ボタンまたは「受け入れる」ボタンは、受け入れボタンも拒否ボタンも処理しないためです。終わりAJAX&PHPが処理されていない複数の送信ボタン

、私の主な目的は、ユーザーがSを打ったときにDBにいくつかのデータを追加することでボタン &を受け入れ、ユーザががボタンを拒否しかし、アヤックスを使用してヒットした場合、DBから一部のデータを削除します。

HTML

<button class="p" type="submit" value="accept"></button> 
<button class="p" type="submit" value="reject"></button> 

PHP

if($_SERVER["REQUEST_METHOD"] == "POST"){ 
    if(isset($_POST["accept"]){ 
     // doSomething 
    }else if(isset($_POST["reject"]){ 
     // doSomethingElse 
    } 
} 
... 
... 
... 

アヤックス(それはちょうど基本的な考え方を持っているために、完全なコードではありません)

var form = $d('#formName'); 

$('.p').click(function(){ 

    var formData = $d(form).serialize(); 

    $d.ajax({ 
     type: 'POST', 
     url: $d(form).attr('action'), 
     data: formData 
    }) 

    .done(function(response){ 
     window.location.reload(true); 
    }) 
}); 
+1

'submit'に' name'属性を付ける必要があります。 – frz3993

+0

'name = "accept"'& 'name = "reject"'を個人に追加しましたが、それでも同じです。上記のようにPHPは処理されません。 @ frz3993 –

+0

これは、boveの入力フィールドを送信して別のフォームタグに入れて送信しようとしたためにうまくいかないかもしれません –

答えて

0

あなたのsubmitnameを与える必要があります属性。例:

<button class="p" name="action" type="submit" value="accept"></button> 
<button class="p" name="action" type="submit" value="reject"></button> 

そして、あなたのPHPコードがaction.Exampleため$_POST値を確認することができます。

if($_POST["action"] == 'accept'){ 
    // doSomething 
}else if($_POST["action"] == 'reject'){ 
    // doSomethingElse 
} 
+0

同じ&my Ajaxが次のようになっていますか: '$ d(form).submit E){ \t \t e.preventDefault(); \t \t //フォームデータをシリアライズ \t \t VAR FORMDATA = $ D(フォーム).serialize(); \t \t //形態 \t \t $をSubmiting d.ajax({ \t \t \tタイプ: 'POST'、 \t \t \t URL:$ dの(フォーム).ATTR( 'アクション')、 \t \t \tデータ:FORMDATA \t \t})の.doneメソッドを使用して \t \t // (機能(応答){ \t \t \t window.location)。リロード(true)。 \t \t}) \t}); ' 「.done()」のためにページだけがリロードされますが、PHPは処理されません。 –

+0

私はあなたがajaxを使ったことを忘れました。私は答えを編集します。 – frz3993

+0

@ KumarDeepak、submitパラメータをクエリ文字列に追加する方法については、他の回答を参照してください。 – frz3993

0

は、手動でそれらのデータを取得することができ、ボタンがシリアル化されない提出します。
また、ボタンにname属性が設定されていることを確認してください。

$('.p').click(function(e){ 
    e.preventDefault(); 
    var formData = $(this).attr('name') + '=' + encodeURIComponent(this.value) + '&' + $d(form).serialize(); 

    $d.ajax({ 
     type: 'POST', 
     url: $d(form).attr('action'), 
     data: formData 
    }) 

    .done(function(response){ 
     window.location.reload(true); 
    }); 
}); 
+0

お返事がありません。なぜか分かりません。 'this.name'は未定義の変数エラーを与えています。あなたは助けてもらえますか? @Musa –

+0

'$(this).attr( 'name')'を試してください – Musa

+0

申し訳ありませんが、今は '予期しないトークン:名前(encodeURIComponent)' を助けてくださいそれを解決することは非常に重要です。 @Musa –

関連する問題