2016-11-18 7 views
0

PHPスクリプトにAJAX経由で変数のグループを送信しようとしています。JQUERY AJAXが検索条件をPHPに返すJSONを返す

一般的に、これは私がしたいものです。

$('.submitSearch').on('click', function() 
{ 
    var rep = $('#rep').val(); 
    var num = $('#num').val(); 
    var uid = $('#uid').val(); 
    // and so on 
    // then I could send each variable to a PHP script 
    $.post('api/summary.php', {rep: rep, num: num, // and so...}, function(data) 
    { 
    console.log(data); 
    }); 
}); 

私は通常、それを行うだろうかだこと。

しかし、今、私は次のように私は、searchCriteriaを呼び出す単一の変数にすべてのパラメータを送信しようとしています:

$('.submitSearch').on('click', function() 
{ 
    var searchCriteria = 
    { 
    rep: $('#rep').val(), 
    num: $('#num').val(), 
    uid: $('#uid').val(), 
    // and so on... 
    } 

    // then send them to the php script 

    $.post('api/summary.php', searchCriteria, function(data) 
    { 
    console.log(data); 
    }); 
}); 

次に、PHPスクリプトでは、変数からすべてのパラメータを取得します処理のために:

<?php 
    if($_POST['searchCriteria'] == true) 
    { 
    // get the parameters 
    // build the query 
    // return JSON 
    } 

    ?> 

私の質問は:どのように私はPHPスクリプトで$ _POST [「searchCriteria」]のうち、すべてのパラメータを得るのですか?

+2

このように送信すると、PHP側でsearchCriteria paramを取得するのではなく、 'rep'と' num'と 'uid'を取得します。 – Quagaar

+0

より大きなオブジェクト{searchCriteria:searchCriteria}にラップして、$ _POST ['searchCriteria']で検索します。 – Carlos2W

+1

@ Carlos2Wのようにするには、JSONデータをPHPに変換するために 'json_decode'を使います配列またはオブジェクト。 – Quagaar

答えて

2

あなたは、単一の$_POSTパラメータのすべてをしたい場合は、あなたがラップする必要があります別のオブジェクト:

$.post('api/summary.php', {searchCriteria : searchCriteria }, function(data) { 
    ... 
}); 

PHPでは、ネストされた配列としてアクセスします。

$sc = $_POST['searchCriteria'] 
$rep = $sc['rep']; 
$num = $sc['num']; 
$uid = $sc['uid']; 

私はこの余分なレベルのラッピングを追加することでどのような効果が期待できるのか分かりません。

+0

私は今テスト中です... –

+0

うわー!!!これは私のために働いた。私がしようとしていたのは、コードを少なく書いていただけでした。ありがとうございます。 –

+0

これは、 'searchCriteria'を単独で送信し、' $ _POST ['rep'] 'にアクセスするよりも少ないコードですか? – Barmar

3

このような大きなオブジェクトでラップしてみてください。

Javascriptを:

$('.submitSearch').on('click', function() 
{ 
    var searchCriteria = 
    { 
    rep: $('#rep').val(), 
    num: $('#num').val(), 
    uid: $('#uid').val(), 
    // and so on... 
    } 

    // then send them to the php script 

    $.post('api/summary.php', {searchCriteria : searchCriteria }, function(data) 
    { 
    console.log(data); 
    }); 
}); 

PHP:

<?php 
    if($_POST['searchCriteria'] == true) 
    { 
    $searchCriteria = json_decode($_POST['searchCriteria']); 
    // Now you can for each loop throught it for example 
    foreach($searchCriteria as $key => $value) { 
     // Do something 
    } 
    } 

?> 
+0

私はそれを現在テスト中です。 –

+0

** $ value **を使ってパラメータの1つにアクセスする方法を教えていただけますか?たとえば、$ valueを使用して** rep **をエコーする方法はありますか? –

+0

なぜ 'json_decode()'を使用していますか?あなたはJavascriptで 'JSON.stringify(searchCriteria)'を呼び出さなかった。 – Barmar

関連する問題