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_parms1
和test_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 '?