我試圖做一個函數,這是由PHP獲取格式化的字符串形式的JSON數據。 但我無法通過此功能獲取格式化的字符串。getJSON獲取格式化的字符串通過函數返回
下面JavaScript代碼:
function getJSON2Str(opt){
var url='t4action.php',returnStr='',i=1;
var textInfo ="";
$.getJSON(url , 'opt='+opt, function (data){
$.each(data,function(){
returnStr+= this.opid + ':' + this.opcont;
if(i < data.length) returnStr += ';';
i++;
})
//alert(returnStr); //<--here is works to show string 'returnStr'.
});
//alert(returnStr); //<-- here is NOT works to show string 'returnStr'.
return returnStr; //<-- finally I want to return 'returnStr' for other use.
}
alert(getJSON2Str('getEduOption')); //<-- here just show a empty string.
的t4action.php代碼非常簡單,只需從像database.Example返回一些數據:
<?php
$returnArr[0]['opid']=2;
$returnArr[0]['opcont']='high school';
$returnArr[1]['opid']=5;
$returnArr[1]['opcont']='university';
$returnArr[2]['opid']=8;
$returnArr[2]['opcont']='elementary school';
$returnArr[3]['opid']=9;
$returnArr[3]['opcont']='research institute';
echo json_encode($returnArr);
?>
我應該怎麼做讓函數工作?謝謝!
我用它的jqGrid搜索屬性這樣的:
.....
search:true, stype:'select', searchrules:{required:true}, searchoptions:{value:getJSON2Str('getEduOption'), sopt:['eq']},
....
我知道,我可以使用dataUrl財產與buildSelect打造的選擇元素。 但在我的情況下,選項以搜索和編輯形式顯示,但不在列表中顯示。 所以我嘗試這種方式讓它工作。如果我使用下面的功能是行得通的。
function getJSON2Str(opt){
return '0:--;2:high school;5:university;8:elementary school;9:research institute';
}
我建議你使用'dataUrl'與'searchoptions'內的'buildSelect'。我沒有理由使用* synchronous *'value'作爲函數。在'buildSelect'裏面,你可以做所有你需要的東西。使用'opt ='+ opt'作爲參數並不好。您應該使用「{opt:opt}」。您可以將'?opt = getEduOption'直接附加到URL('dataUrl:「t4action.php?opt = getEduOption」')或使用'searchoptions'的'postData'選項,如果需要可以作爲函數。 – Oleg