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 как [объектный объект], либо только как первое значение. Думал, у меня все это работало, но я отправлял только 1 параметр, который работает отлично. Какой синтаксис правильный? ТИА.
[]
представляет массив.
[1,2,3,]
массив с 3 элементами.
{}
представляет объект.
[{"as":1},{"asa":2},{"sd":3}]
пример массива из 3 объектов с парой ключ-значение
Попробуйте изменить [ {'parm_val_var1':1, 'parm_val_var1':2}]
Как
[{"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'
}, ....
тогда в 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);
Он берет список параметров и создает массив, который требует sqlsrv с параметром «parm1,1», определяющим входной параметр, а затем вызывает хранимый процесс SQLServer, запрошенный хранилищем ExtJS. $ Tsql_callSP должен быть построен из массива parms, поэтому ‘?’ добавляется для каждого параметра.