如何传递存储中的数组或对象.加载({params:{}})


how to pass array or object in store.load({ params: { } })?

store.load({
        params: {
            start: 0,
            limit: 1000,
            proc_nm: 'sel_bkng_srch',
            test_parms1: [
                {'parm_val_var1':1, 'parm_val_var1':2}
            ],
            srchStrng: '',
            test_parms2: JSON.stringify(parm_val_var1, parm_val_var1),
            connId: 'AW'
        } ....

test_parms1test_parms 2是尝试将某种数组/对象作为存储过程参数进入php,而不必单独列出它们。我所有的尝试要么在PHP中以[object object]结束,要么只有第一个值。我以为我有所有这些工作,但我只发送一个参数,这是完美的。正确的语法是什么?tia。

[]表示数组。

3个元素的[1,2,3,]数组。

{}表示对象。

[{"as":1},{"asa":2},{"sd":3}]是一个具有键值对的3个对象数组的例子。

尝试更改[ {'parm_val_var1':1, 'parm_val_var1':2}] As

[{"parm_val_var1":1}, {"parm_val_var1":2}]基本上是Json对象的数组,其中每个对象都有一个键值对。

对于下面给出的json,元素将被如下方式访问:{"abc":[{"as":1},{"asa":2},{"sd":3}]}

jsonObject.abc.as = 1
jsonObject.abc.asa = 2
jsonObject.abc.sd = 3

还请注意,我已将'(单引号)替换为"(双引号)。这是JSON标准

store.load({
        params: {
            start: 0,
            limit: 1000,
            proc_nm: 'sel_bkng_srch',
            test_parms2: JSON.stringify([dnStrng, mtStrng, dtFromStrng, dtToStrng]),
            connId: 'AW'
        }, ....

then in php:

$proc_parms = json_decode($_REQUEST['test_parms2']);
$procNm = $_REQUEST['proc_nm'];
$proc_parms_ar = array();
$i = 0;
foreach($proc_parms as $val) {
    flog("val = %s", $val);
    array_push($proc_parms_ar,array($proc_parms[$i], 1));
    $i++;
}
$tsql_callSP = "{call " .  $procNm . "( ?, ?, ?, ?)}";
/* Execute the query. */
$stmt = sqlsrv_query( $conn, $tsql_callSP, $proc_parms_ar);

这将获取parms列表并创建sqlsrv需要的数组,其中'parm1,1'定义了一个输入参数,然后调用ExtJS存储请求的SQLServer存储过程。$tsql_callSP需要从parms数组构造,所以a '?