2017-11-09 19 views
0

処理のためにフォームパラメータのグループをPHPスクリプトに送信しようとしています。ajax PHPへのフォーム変数のPOSTグループ

私はこれまでに$.postを使ってこのようなことを行ってきましたが、現在は$.ajaxを使用して厳密にそれを達成しようとしています。ここで

は、PHPスクリプトに変数のすべてを送ることになっているjqueryのクリックイベントである:ここで

$('.searchSubmit').on('click', function() 
{ 
    var searchCriteria = { 
     import_bill: $('#import_bill').val(), 
     import_ramp: $('#import_ramp').val(), 
     import_delivery: $('#import_delivery').val(), 
     // few more form parameters 
    }; 

    $.ajax({ 
    url: 'api/railmbs.php', // process script 
    type: 'POST', 
    data: searchCriteria, // parameter group above 
    dataType: 'html' // had this set to json, but only got fail 
    success: function(data, textStatus, jqXHR) 
    { 
     console.log(data); 
    }, 
    error: function(jqHHR, textStatus, errorThrown) 
    { 
     console.log('fail'); 
    } 
    }); 
}); 

はrailmbs.phpと呼ばれる、PHPスクリプトです:

<?php 
    if(isset($_POST['searchCriteria'])) 
    { 
    $value = $_POST['searchCriteria']; 
    $_SESSION['where'] = ""; 

    $import_bill = mysqli_real_escape_string($dbc, trim($value['import_bill'])); 
    $import_ramp = mysqli_real_escape_string($dbc, trim($value['import_ramp'])); 
    $import_delivery = mysqli_real_escape_string($dbc, trim($value['import_delivery'])); 

    echo $import_bill; // just trying to echo anything at this point 
    } 
?> 

ありません私が間違っていることを確かめてください。上記のIFの前にI echohelloと入力すると、コンソールが適切に出力されます。しかし、私はの中からechoに何かを得ることができません。

誰か私のエラーが表示されますか?助けてくれてありがとう。

+1

は、あなたの質問に答えました。見てください。 –

答えて

1

あなたが "searchCriteria" 変数を設定されていません。

$('.searchSubmit').on('click', function() 
{ 
    var searchCriteria = { 
     import_bill: $('#import_bill').val(), 
     import_ramp: $('#import_ramp').val(), 
     import_delivery: $('#import_delivery').val(), 
     // few more form parameters 
    }; 

    $.ajax({ 
    url: 'api/railmbs.php', // process script 
    type: 'POST', 
    data: searchCriteria, // parameter group above 
    dataType: 'html' // had this set to json, but only got fail 
    success: function(data, textStatus, jqXHR) 
    { 
     console.log(data); 
    }, 
    error: function(jqHHR, textStatus, errorThrown) 
    { 
     console.log('fail'); 
    } 
    }); 
}); 

:この

変更

$('.searchSubmit').on('click', function() 
{ 
    var data = { 

    searchCriteria: { 

     import_bill: $('#import_bill').val(), 
     import_ramp: $('#import_ramp').val(), 
     import_delivery: $('#import_delivery').val(), 
     // few more form parameters 

    } 

    }; 

    $.ajax({ 
    url: 'api/railmbs.php', // process script 
    type: 'POST', 
    data: data, // parameter group above 
    dataType: 'html' // had this set to json, but only got fail 
    success: function(data, textStatus, jqXHR) 
    { 
     console.log(data); 
    }, 
    error: function(jqHHR, textStatus, errorThrown) 
    { 
     console.log('fail'); 
    } 
    }); 
+0

testing ........ –

+0

ありがとう、これはうまくいきました。あなたの回答とその答えを受け入れる。 –

+0

問題ありません!幸せに助けて:) –

0

ブラウザの開発者ツールを使用して実際に投稿データを送信するか、PHPスクリプトの冒頭にvar_dump($_POST);と入力してください。

私が見る限り、実際には投稿変数としてsearchCriteriaを設定することはありません。

現在、$_POST変数には、フィールドimport_bill,import_rampなどが含まれている必要があります。 ifステートメントまたはJavaScriptオブジェクトを{searchCriteria: {/*Your data here*/}に変更してください。

+0

いいです。本当に素早くチェックします。 –

+0

私はただconsole.log(searchCriteria)と私はフォームのパラメータをキャッチしているようだ。 –

1

まず、 $("form").serialize()を使用しない理由それはずっときれいだろう。 セカンダリでは、ルートオブジェクトのデータを転送するので、値を取得するには$_POST配列をチェックしてください。 $value = $_POST['searchCriteria']の代わりに$value = $_POST;を使用してください。

<?php 
    if(isset($_POST)) 
    { 
    $_SESSION['where'] = ""; 

    $import_bill = mysqli_real_escape_string($dbc, trim($_POST['import_bill'])); 
    $import_ramp = mysqli_real_escape_string($dbc, trim($_POST['import_ramp'])); 
    $import_delivery = mysqli_real_escape_string($dbc, trim($_POST['import_delivery'])); 

    echo $import_bill; // just trying to echo anything at this point 
    } 
?> 

またはこのように、searchCriteriaオブジェクトにデータを送信するために、あなたのjsを変更します: このPHPコードは動作するはずです

var searchCriteria = { 
searchCriteria: { 
     import_bill: $('#import_bill').val(), 
     import_ramp: $('#import_ramp').val(), 
     import_delivery: $('#import_delivery').val(), 
     // few more form parameters 
    }};