2015-01-12 2 views
0

Доброе утро всем. У меня есть страница, которая возвращает jQuery .post на страницу PHP, где выполняется запрос в отношении MySQL db, и результаты возвращаются в формате JSON. В зависимости от результата запроса может появляться несколько строк JSON. Предполагается, что одно «поле» вывода JSON (appparenthcacyrsYear) используется для выбора всех возвращаемых значений в моем мультиселекте, но я не могу заставить его работать.PHP/JQUERY: 1 Query, N JSON Strings, Loop for Multiselect

Позвольте мне показать некоторый вывод 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> 

EDIT: предшествующий код 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":"[email protected]","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":"[email protected]","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"); 
} 

Мог бы один из вас добрых людей там вести меня к правильному ответу?

спасибо !!

+0

'я <= obj3.length;' 'Где obj3'? Ваш вопрос звучит так, как jquery '.post' является неотъемлемой частью этой проблемы, но вы не показываете код для этого. –

ответ

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": "[email protected]", "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": "[email protected]", "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); 
    }); 
+0

Спасибо! Я не пошел точно так же, как и выше, НО напоминание о «$ .each» заставило меня двигаться в правильном направлении, и это то, что мне нужно! :) – TheJester1977