2013-04-25 49 views
0

尋找一個最好的解決辦法:PHP JSON數據返回的jQuery

$.getJSON("InsertData.php", {fullName:val1, course_id:course_id, occupation:val2}, function(data) { 
     $.each(data, function(i, user) { 
      //alert(user.aryA.status); 
      if(user.aryA.status == 'true'){ 
       currentPosition = 2; 
       checkData(); 
       nextSlide(); 
      }else{ 
       nextSlide(); 
      } 
     }); 

    }) 

這裏是PHP代碼:

mysql_select_db("db", $con); 

    $Query="SELECT * from table WHERE fullName='".$fullName."' and course_id='".$cid."'"; 
    $result = mysql_query($Query); 
    $totalRecords = mysql_num_rows($result); 
    if($totalRecords) { 
     while ($row = mysql_fetch_array($result)) { 
       $returnData[]=array( //for Json data array 
      'userName' => $row['fullName'], 
      'aryA' => array(
       'status' => $row['status'] 
       ) 
      ); 
     } 

    } 

    if(!$totalRecords) { 
     $insertQuery="INSERT INTO table (fullName,course_id,occupation) VALUES ('".addslashes($fullName)."','".addslashes($cid)."','".addslashes($d3)."')"; 
     $result1 = mysql_query($insertQuery); 

    }else{ 
     if($stat == "true"){$value = 1;} 
     } 

mysql_close($con); 

echo json_encode($returnData); 

所以,當我打的PHP通過jQuery的第一情況下,它在數據庫中保存數據,但給我錯誤或長度。因爲$ returnData是空的。有沒有辦法,如果$ totalRecords是假的,如何發送json_encode說沒有數據或通過json_encode沒有任何價值我的jQuery功能。

在此先感謝。

+5

您正在使用[**的**過時的數據庫API(http://stackoverflow.com/q/12859942/19068),並應使用[現代更換](http://php.net/manual/ EN/mysqlinfo.api.choosing.php)。你還**易受[SQL注入攻擊(http://bobby-tables.com/)**,一個現代化的API會更容易爲[維護](http://stackoverflow.com/questions/60174/best-way-to-prevent-sql-injection-in-php)自己從。 – Quentin 2013-04-25 14:42:31

+1

拜託,請......第time個時間:_stop使用'mysql_ *'_ _。這是不安全的並且被棄用,並且會隨時從PHP中完全刪除。使用'mysqli_ *'或'PDO' – 2013-04-25 14:42:51

+0

只需在代碼頂部添加'$ returnData = array()'。這將被編碼爲''[]''。當'$ .each'傳遞一個空數組時,它什麼也不做。 – 2013-04-25 14:47:07

回答

0
$returnData = array(); //add this 
$totalRecords = mysql_num_rows($result); 
if($totalRecords) { 
while ($row = mysql_fetch_array($result)) { 
     $returnData[]=array( //for Json data array 
    'userName' => $row['fullName'], 
    'aryA' => array(
     'status' => $row['status'] 
     ) 
    ); 
} 

} 
else 
{ 
$returnData[] = 'no Record'; //add this 
} 
1

只安裝一個else語句,並添加一個「成功」的關鍵是你的陣列:

if($totalRecords){ 
    while ($row = mysql_fetch_array($result)) { 
      $returnData[]=array( //for Json data array 
     'success'=>'true', 
     'userName' => $row['fullName'], 
     'aryA' => array(
      'status' => $row['status'] 
      ) 
     ); 
    } 
}else{ 
    $returnData = array('success'=>'false'); 
} 

然後檢查你的jQuery的「成功」的價值。

此外,你真的不應該使用mysql_ *。

+1

謝謝pmandell。我會更新我的mysqli的 – fguru 2013-04-25 14:55:36

+1

代碼就一定要使用[bind_param(http://php.net/manual/en/mysqli-stmt.bind-param.php)功能,否則你會被錯過了點。 [SQL注入漏洞](http://bobby-tables.com/)不是玩笑。 – tadman 2013-04-25 15:03:21