2016-11-18 80 views
0

我想通过AJAX发送一组变量到PHP脚本。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 
    } 

    ?> 

我的问题是:如何获得的所有参数进行$ _ POST [“searchCriteria”]在PHP脚本?

+2

如果你这样发送,你不会在PHP端获得一个searchCriteria参数,而是'rep'and'num'和'uid'。 – Quagaar

+0

只需将它包装在一个更大的对象{searchCriteria:searchCriteria}中,然后您将使用$ _POST ['searchCriteria']检索它 – Carlos2W

+1

如果您以@ Carlos2W的身份执行操作,请使用'json_decode'将JSON数据转换为PHP数组或对象。 – 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 **来访问其中一个参数吗?例如,我将如何使用$ value回显** rep **? –

+0

你为什么使用'json_decode()'?你没有在Javascript中调用'JSON.stringify(searchCriteria)'。 – Barmar