2011-08-18 76 views
1

我是一個菜鳥到jQuery和我想知道如何使用,如果其他的爲以下幾點:如果其他jQuery的

在服務器端有一個如果的行數等於0和其他一些JSON部分。

$age= mysql_query("SELECT title FROM parent WHERE id ='$name'"); 
$age_num_rows = mysql_num_rows($age); 
    if ($age_num_rows==0) 
    { 
    echo "true"; 
    } 
    else 
    { 
$sql ="SELECT * FROM parentid WHERE id = '$name'"; //$name is value from html  
$result = mysql_query($sql); 
while($row = mysql_fetch_array($result)) 
    { 
$abc_output = array('title' => $row['title'],'age' => $row['age']); 
    } 
echo json_encode($abc_output); 
    } 

現在來Jquery的一部分:

如果上面的PHP代碼去如果一部分的話,我想顯示一個警告框,或者如果它去其他一部分它需要插入一些價值觀轉化爲形式。 這是我嘗試過的東西,但它沒有奏效。

$(document).ready(function(){ 
     $("#button1").click(function(){ 
     $.getJSON('script_1.php',function(data){ 
      if (data=='true') { 
       alert ('hello') 
      } 
      else { 
       $.post('script_1.php', 
        { id: $('input[name="id"]', '#myForm').val() }, 
        function(json) { 
         $("input[name='title']").val(json.title); 
         $("input[name='age']").val(json.age); 
        }, 
        "json"); 
      } 
     }); 
    }); 

編輯

$(document).ready(function(){ 
$("#button1").click(function(){ 
    $.post(
     'script.php', 
     { id: $('input[name="id"]', '#myForm').val() }, 
     function(json) { 
      var data = JSON.parse(json); 
      if (data.length === 0){ 
      alert('no data'); 
      } 
      else{ 
      $("input[name='title']").val(json.title); 
        $("input[name='age']").val(json.age); 

      }}, 
     "json" 
    ); 
}); 
}); 

PHP側

$name = mysql_real_escape_string($_POST['id']); 
$sql ="SELECT * FROM parentid WHERE id = '$name'";  
$result = mysql_query($sql); 
$row = mysql_fetch_array($result); 
if ($row) { 
$row= array('title' => $row['title'],'age' => $row['age']); 
echo json_encode($row); 
} else { 
echo json_encode(array()); 
} 
+0

當你說這沒有工作,你看到了什麼? – GBa

+2

「如果其他循環」? ' – feeela

+1

I;'json_encode(真):回聲應該讀 - 你的意思就是所謂的條件,而不是一個循環什麼...你也不會從'如果($ age_num_rows == 0)'內返回JSON數據認爲'data =='yes''應該是'data =='true''看你的PHP代碼。除此之外,什麼「不起作用」? – Kokos

回答

2

似乎有是幾個問題:

  1. 您處理數據從getJSON返回如果是純文本
  2. ,你是從JavaScript調用PHP不總是 返回JSON
  3. 你正在做2個Ajax請求; getJSONpost,你只需要一個:到getJSON第一個電話,沒有任何數據不會到達else條件

順便說一句,來自哪裏你的PHP腳本$name?對於你的第二個Ajax調用工作,如果它是一個整數,它需要像mysql_real_escape_string($_POST['id'])(int) $_POST['id']

編輯:我認爲這將是最容易擺脫.post並只使用第一個ajax調用。所以,你需要改變:

$.getJSON('script_1.php',function(data){ 

喜歡的東西:

$.getJSON('script_1.php?id=' + $('input[name="id"]').val(), function(data) { 

,並在你的PHP,你需要使用類似:

$name = mysql_real_escape_string($_GET['id']); 
+0

的thankss第三點,你說的是problem..how我可以實現上述使用1個Ajax請求使用...一小段代碼,將不勝感激.. –

+0

爲$的名稱來自html ...我沒有包括上面的代碼在這裏提到的語法,但它實際上是在原來的PHP .. –

+0

@約翰看到我的編輯。 – jeroen

3

您需要解析JSON你可以像那樣使用它。現代瀏覽器將支持JSON.parse(yourJSON),但爲了解決那些不支持的問題,您應該使用Douglas Crockford's JavaScript JSON library。如果瀏覽器沒有它,它將提供JSON.parse()

對於您在PHP中執行的if-else內容,通常的做法是回顯一個空的JSON對象或數組,因此您不必測試服務器端沒有行的內容。你可以做這樣簡單的東西,後來佔你的數據庫列名:

$result = mysql_query($sql); 
$row = mysql_fetch_assoc($result); 
if ($row) { 
    echo json_encode($row); 
} else { 
    echo json_encode(array()); 
} 

早在JavaScript中,然後你可以做這樣的事情:

var data = JSON.parse(json); 
if (data.length === 0) { 
    alert('no data'); 
} else { 
    $("input[name='title']").val(data.title); 
    $("input[name='age']").val(data.age); 
} 

的Jeroen是正確的,雖然,你只需要使用一個AJAX調用。

+0

嘿查爾斯...我所做的修改。如你所說,目前仍是代碼似乎沒有工作...我包括編輯的部分上面可以請你讓我知道如果有什麼錯在上面的代碼? –

+0

唯一突出的是它仍然不能在某些瀏覽器中工作。查看關於包含Crockford代碼的答案的一開始。 –

+0

firbug拋出了這個錯誤JSON.parse:數據的 [打破該誤差] VAR數據= JSON.parse(JSON)意外的結束; –