2012-11-27 16 views
0

嘿傢伙即時嘗試通過json_encode獲取我的ajax的值,並使用$ .each迭代每個結果,但每個輸入返回未定義的值從我的PHP這裏是阿賈克斯ajax返回undefined,在firebug響應控制檯只有一行數據

var counter_sub = 0 ; 
var html; 
      $.ajax({ 
        type:'POST', 
        url:'add_subject.php', 
       dataType:'json', 
        data:{'func_numbr':'2'}, 
       success:function (data){ 
        $.each(data, function(i, item) { 

        html = "<tr>"; 
        html += "<td><lable>Subject: </label><input type='text' name='subject["+counter_sub+"]' value='"+data[i].subj_name+"'></td>"; 
        html += "<td><input type='button' id='activate' name='active' class='button' value='Active'> "; 
        html += "<input type='button' id='inactivate' name='active' class='button' value='Inactive'></td>"; 
        html += "</tr>"; 
      $('#curr-elem-tble').append(html); 

      counter_sub = counter_sub +1; 
      }); 
       }  
     }); 

和PHP

<?php 
include_once('DBconnect.php'); 
$func_num = $_POST['func_numbr']; 

switch ($func_num) { 
case 1: 
    insert_new_subject(); 
    break; 
case 2:  
    get_elementary_subjects(); 
    break; 
} 

function insert_new_subject(){ 
$level = $_POST['year_level']; 
$subjct_name =$_POST['subjct_name']; 
$units_nmber = $_POST['subjct_units']; 

$insert_subject = "INSERT INTO subjects (subject_name,level,status,subject_units)  VALUES('$subjct_name','$level','1','$units_nmber')"; 

       if(@!mysql_query($insert_subject)){ 
        die('error insert'.mysql_error()); 

        } 
        else{ 
         $return ['error'] = false; 
        } 

echo json_encode($return);     
} 

    function get_elementary_subjects(){ 

$select_subjects_elem = "SELECT subject_name,subject_id,status FROM subjects WHERE level='elementary' "; 

    $connect = mysql_query($select_subjects_elem) or die(mysql_error()); 
    $data[]=array(); 

    while($row = mysql_fetch_array($connect)){ 
     $data= array(
      'subj_name' =>$row['subject_name'], 
      'subj_id'=>$row['subject_id'], 
      'subj_status'=>$row['status'], 
      ); 
    } 

    echo json_encode($data); 
} 
?> 

我切碎每個TD成不同線路的HTML和CONCAT它與+ =還是無法弄清楚爲什麼它返回undefined。我用螢火蟲檢查過,控制檯只返回1行數據,雖然它遍歷所有結果。

+0

也,如果你使用'data [i]',用'i'和'item'實現'each'方法有什麼意義?你可以使用'item' –

+0

我開始理解爲什麼準備好的語句設法得到一個事實上的標準來轉義值..在寫入MySQL之前,請逃避你的用戶輸入 –

回答

2

你只得到一行,因爲在你的while循環中,你覆蓋整個數組而不是追加到它。改變數組聲明:

$data = array(); 

和代碼迴路:

$data[] = array(
     'subj_name' =>$row['subject_name'], 
     'subj_id'=>$row['subject_id'], 
     'subj_status'=>$row['status'], 
    ); 
0

試試這個代碼,

function get_elementary_subjects(){ 

    $select_subjects_elem = "SELECT subject_name,subject_id,status FROM subjects WHERE level='elementary' "; 

    $connect = mysql_query($select_subjects_elem) or die(mysql_error()); 

    $data = array(); //<---changed $data[] to $data 

    while($row = mysql_fetch_array($connect)){ 

     //change $data to $data[] 
     $data[] = array(
      'subj_name' =>$row['subject_name'], 
      'subj_id'=>$row['subject_id'], 
      'subj_status'=>$row['status'] //<---removed comma here 

     ); 
    } 

    echo json_encode($data); 
    exit; //<---Added exit here 
} 

見我的評論在上面的代碼