【发布时间】:2013-05-26 21:01:07
【问题描述】:
我正在尝试制作一个函数,这是通过 PHP 获取格式化字符串形式的 JSON 数据。 但是我不能通过这个函数得到格式化的字符串。
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 代码很简单,只是从数据库中返回一些数据。例如:
<?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';
}
【问题讨论】:
-
我建议您在
searchoptions中使用dataUrl和buildSelect。我认为没有理由使用定义为函数的 同步value。在buildSelect内部,您可以做所有您需要的事情。'opt='+opt作为参数的用法不好。您应该改用{opt: opt}。您可以将?opt=getEduOption直接附加到URL (dataUrl: "t4action.php?opt=getEduOption") 或使用searchoptions的postData选项,如果需要,可以作为一个函数。
标签: javascript function jqgrid getjson