PHP / JQUERY:1个查询,N个JSON字符串,多个循环循环

时间:2015-01-12 14:55:33

标签: php jquery json

大家早上好。我有一个页面,它将jquery .post返回到PHP页面,其中对MySQL数据库执行查询,结果以JSON格式返回。根据查询输出,可能会返回多个JSON字符串。 JSON输出的一个“字段”(appparenthcacyrsYear)应该用于选择我的多选中的所有返回值,但我无法使其工作。

让我展示一些JSON输出和我到目前为止所尝试的内容(为了SO的目的而缩短)...

Multiselect(PHP):

<select name="appParentHCACYrs[]" id="ParentHCACYrs" multiple="multiple" size="3">
    <?php
        $getHCACyrs = "select * from tblAppLookup where applookupCategoy = 'HCACyrs' order by applookupSortID;";
         $getHCACyrsresults = $mysqli->query($getHCACyrs);
         while ( $row = $getHCACyrsresults->fetch_object() ) {
             $id = $row->applookupItemID;
             $name = $row->applookupItemDesc;
             print "<option value=\"$id\">$name</option>\n";
         }
    ?>
</select>

Multiselect(HTML):

<select name="appParentHCACYrs[]" id="ParentHCACYrs" multiple="multiple" size="3">
    <option value="1">Year 1</option>
    <option value="2">Year 2</option>
    <option value="3">Year 3</option>
</select>

编辑:前面的jquery代码,根据Patirck的评论:

function ProcessForm(qnum, answer) {
    $("#ContEnrollSelect").html("");
    $("#ContEnrollSelect").dialog("close");
    if (qnum == 1) {
        $.post("/chairs-dev/jqf/addapp_processajax.php", {PID: answer}, function (data) {
...

addapp_processajax.php

if(isset($_POST['QNUM'])) {
    $qnum = $_POST['QNUM'];

    if ($qnum == 1) {
        $getretquery = "SELECT a.parentID, concat(a.parentFName, ' ', a.parentLName) as ParentName, a.parentDOB, a.parentPriPhone from tblParents a";
    } elseif ($qnum == 2) {
        $getretquery = "SELECT a.parentID, concat(a.parentFName, ' ', a.parentLName) as ParentName, b.childID, concat(b.childFName, ' ', b.childLName) as ChildName, a.parentDOB, b.childDOB, a.parentPriPhone from tblParents a, tblChildren b where a.parentID = b.childParentID";
    } elseif ($qnum == 3) {
        $getretquery = "SELECT a.childID, concat(a.childFName, ' ', a.childLName) as ChildName, a.childDOB from tblChildren a";
    }
    $getretqueryresults = $mysqli->query($getretquery);
    while ($row1 = $getretqueryresults->fetch_object()) {
        $rows1[] = $row1;
    }

    $ret1 = json_encode($rows1);
    print json_encode($rows1);
}

结束编辑

JSON输出示例:

[{"appID":"2","appParentFName":"Anita","appParentLName":"Smith","appParentGender":"1","appParentDOB":"1976-04-21","appParentAddr1":"123 Main St","appParentAddr2":"","appParentCity":"Anytown","appParentZip":"12345","appParentPriPhone":"813-555-1212","appParentPriPhoneType":"2","appParentAltPhone":"","appParentAltPhoneType":"0","appParentTextable":"1","appParentEmail":"asmith@mymail.com","appParentPriLang":"34","appparentaltlangsLangID":"130","appParentHispYN":"1","appParentHispNationality":"18","appParentRace":"2","appParentHLEC":"7","appParentLastGradeComp":"12","appParentPriSecEducStatus":"1","appParentCollegeEnrolled":"0","appParentHigherEducTrainingStatus":"0","appParentRelToChild":"1","appParentLivesWith":"2","appParentMaritalStatus":"1","appParentSpouseName":"Bob","appParentNumChildrenEnrolled":"2","appparenthcacyrsYear":"1","appparenthcaclangsLang":"3","appParentOccupation":"1","appParentEmploymentStatus":"2"},
 {"appID":"2","appParentFName":"Anita","appParentLName":"Smith","appParentGender":"1","appParentDOB":"1976-04-21","appParentAddr1":"123 Main St","appParentAddr2":"","appParentCity":"Anytown","appParentZip":"12345","appParentPriPhone":"813-555-1212","appParentPriPhoneType":"2","appParentAltPhone":"","appParentAltPhoneType":"0","appParentTextable":"1","appParentEmail":"asmith@mymail.com","appParentPriLang":"34","appparentaltlangsLangID":"130","appParentHispYN":"1","appParentHispNationality":"18","appParentRace":"2","appParentHLEC":"7","appParentLastGradeComp":"12","appParentPriSecEducStatus":"1","appParentCollegeEnrolled":"0","appParentHigherEducTrainingStatus":"0","appParentRelToChild":"1","appParentLivesWith":"2","appParentMaritalStatus":"1","appParentSpouseName":"Bob","appParentNumChildrenEnrolled":"2","appparenthcacyrsYear":"3","appparenthcaclangsLang":"3","appParentOccupation":"1","appParentEmploymentStatus":"2"}]

代码失败#1:

var oPHCACYrs = new Array();
for (i = 0; i <= obj3.length; i++) {
    if (!(typeof obj3[i].appparenthcacyrsYear === 'undefined')) {
        oPHCACYrs.push(obj3[i].appparenthcacyrsYear);
    }
}
    ...
$('#ParentHCACYrs').val(vals);

代码失败#2:

var oPHCACYrs = new Array();
for (b = 0; b <= obj3.length; b++) {
    if (!(typeof obj3[b].appparenthcacyrsYear === 'undefined')) {
        oPHCACYrs[oPHCACYrs.length] = obj3[b].appparenthcacyrsYear;
    }
}
...
for (e = 0; e <= oPHCACYrs.length; e++) {
    $("#ParentHCACYrs option[value='" + oPHCACYrs[e] + "']").attr("selected", 1);
    $("#ParentHCACYrs").multiselect("refresh");
}

你们其中一个善良的人能指导我找到正确的答案吗?

谢谢!

1 个答案:

答案 0 :(得分:0)

使用$.each进行集合循环。检查 JSFIDDLE

<select name="appParentHCACYrs[]" id="ParentHCACYrs" multiple="multiple" size="3">
    <option value="1">Year 1</option>
    <option value="2">Year 2</option>
    <option value="3">Year 3</option>
</select>

和jQuery

    var jsonArray = [{"appID": "2", "appParentFName": "Anita", "appParentLName": "Smith", "appParentGender": "1", "appParentDOB": "1976-04-21", "appParentAddr1": "123 Main St", "appParentAddr2": "", "appParentCity": "Anytown", "appParentZip": "12345", "appParentPriPhone": "813-555-1212", "appParentPriPhoneType": "2", "appParentAltPhone": "", "appParentAltPhoneType": "0", "appParentTextable": "1", "appParentEmail": "asmith@mymail.com", "appParentPriLang": "34", "appparentaltlangsLangID": "130", "appParentHispYN": "1", "appParentHispNationality": "18", "appParentRace": "2", "appParentHLEC": "7", "appParentLastGradeComp": "12", "appParentPriSecEducStatus": "1", "appParentCollegeEnrolled": "0", "appParentHigherEducTrainingStatus": "0", "appParentRelToChild": "1", "appParentLivesWith": "2", "appParentMaritalStatus": "1", "appParentSpouseName": "Bob", "appParentNumChildrenEnrolled": "2", "appparenthcacyrsYear": "1", "appparenthcaclangsLang": "3", "appParentOccupation": "1", "appParentEmploymentStatus": "2"},
        {"appID": "2", "appParentFName": "Anita", "appParentLName": "Smith", "appParentGender": "1", "appParentDOB": "1976-04-21", "appParentAddr1": "123 Main St", "appParentAddr2": "", "appParentCity": "Anytown", "appParentZip": "12345", "appParentPriPhone": "813-555-1212", "appParentPriPhoneType": "2", "appParentAltPhone": "", "appParentAltPhoneType": "0", "appParentTextable": "1", "appParentEmail": "asmith@mymail.com", "appParentPriLang": "34", "appparentaltlangsLangID": "130", "appParentHispYN": "1", "appParentHispNationality": "18", "appParentRace": "2", "appParentHLEC": "7", "appParentLastGradeComp": "12", "appParentPriSecEducStatus": "1", "appParentCollegeEnrolled": "0", "appParentHigherEducTrainingStatus": "0", "appParentRelToChild": "1", "appParentLivesWith": "2", "appParentMaritalStatus": "1", "appParentSpouseName": "Bob", "appParentNumChildrenEnrolled": "2", "appparenthcacyrsYear": "3", "appparenthcaclangsLang": "3", "appParentOccupation": "1", "appParentEmploymentStatus": "2"}];
    $.each(jsonArray, function(idx, obj) {
        $("#ParentHCACYrs option[value='" + obj.appparenthcacyrsYear + "']").attr("selected", 1);
    });
相关问题