2014-02-18 175 views
2

我試圖評估id的值,它應該在POST中從jQuery傳遞到PHP。jQuery AJAX POST到PHP問題

的通話將返回{'id':'99'},這是確定的,如果id不等於0。我不知道爲什麼($x == "0")不被評估爲true在我的PHP函數。

任何幫助將不勝感激!提前致謝。

的jQuery:

$(document).ready(function() { 
    $.ajax({ 
     url: '/more.php', 
     type: 'POST', 
     data: JSON.stringify({"id" : "0"}), 
     success: function(data) { 
      $("body").append(data); 
     } 
    }); 
}); 

PHP:

if (isset($_POST['id'])) { 
     $con=mysqli_connect("localhost","user","pass","schema"); 
     getmore($_POST['id']); 

     function getmore($x) { 
     if ($x == "0") { 
      $sqldata = mysqli_query($con,"SELECT * FROM IRCLOG WHERE DATETIME >= date_sub(curdate(),interval 1 day)"); 
     } 
     else { 
      $sqldata = mysqli_query($con,"SELECT * FROM IRCLOG WHERE DATETIME >= date_sub(curdate(),interval 1 day)"); 
     } 
      // your business logic 
      $rows = array(); 
      while($r = mysqli_fetch_array($sqldata)) { 
      $rows[] = $r; 
      } 

      echo json_encode($rows); 
     } 
    } 
else {echo "{'id':'99'}";} 
+0

當你回聲$ X你得到了什麼價值? –

+0

你試過如果(is_numeric($ x)&& $ x === 0))或比較0沒有「(引號) –

+1

函數getmore定義裏面if? – Mate

回答

2

我想可能是因爲PHP是轉換$_POST['id']爲整數。請嘗試以下操作:

function getmore($x) { 
    $x = intval($x); 
    if ($x == 0) { 

另一個原因可能是您的AJAX被錯誤地發送數據。嘗試使用:

data: {id : "0"} 

在AJAX請求中。

AJAX調用中的data設置接受PlainObjectString參數。從文檔:

它被轉換爲查詢字符串,如果還沒有一個字符串。它的 追加到GET請求的URL。請參閱processData選項 阻止此自動處理。對象必須是鍵/值對。如果 value是一個數組,jQuery基於傳統設置的值(如下所述)使用相同密鑰 序列化多個值。

0

發送您的數據這樣。 數據:{ 「ID」: 「0」},

1

你爲什麼不使用

$(document).ready(function() { 
    var id_main = 0; 
     $.ajax ({ 
      type: "POST", 
      url: "/more.php", 
      data: { id: id_main }, 
    }); 
});