2013-03-17 63 views
0

我使用ajax調用來從我的mysql數據庫中獲取一些數據。這是我的Ajax調用:不能使用if語句檢查POST數據。

$.ajax({ 
    type: "POST", 
    url: "fetch.php", 
    data: id, 
    success: function(msg) { 
     var record = JSON.parse(msg); 
     $("#name").val(record.name); 
     $("#description").val(record.description); 
     switch(record.category) { 
      case ("Residential"): 
       $("#category").val("residential"); 
       break; 
      case ("Modernisation & Domestic Extensions"): 
       $("#category").val("modernisation"); 
       break; 
      case ("Feasibility Layouts"): 
       $("#category").val("feasibility"); 
       break; 
      case ("Master Planning"): 
       $("category").val("master"); 
       break; 
      default: 
       $("category").val(""); 
     }; 
     switch(record.featured) { 
      case ("y"): 
       $("#featured").val("y"); 
       break; 
      default: 
       $("featured").val("n"); 
     }; 
    } 
}) 

,這是我的PHP文件:

 <?php 
     $dbc = mysqli_connect('XX','XX','XX','XX'); 

     $id = $_POST['id']; 

     if($dbc) { 
      $row = fetchDataFromRecordWithId($dbc,$id); 
     } 
     else { 
      echo 'Database error'; 
     } 

     function fetchDataFromRecordWithId($dbc,$id) { 
      $q = "SELECT * FROM Projects WHERE id = ".$id; 
      $r = mysqli_query($dbc, $q); 

      $row = mysqli_fetch_array($r, MYSQLI_ASSOC); 
      mysqli_close($dbc); 
      return $row; 
     } 

     echo json_encode($row); 
     ?> 

一切工作完美無瑕,但很快,當我試圖在我的PHP文件中的if語句添加到檢查是否有任何POST數據比我的ajax調用沒有得到任何迴應。我嘗試了不同的方法:

<?php if(isset($_POST)) { .. my whole php code here .. } ?> 

    <?php if(!empty($_POST)) { ..my whole php code here .. } ?> 

    <?php if($_POST) { .. my whole php code here .. } ?> 

    <?php if($_POST['id']) { .. my whole php code here .. } ?> 

但沒有任何工作!當我使用上面列出的任何if語句時,Ajax調用不會獲取json數據。

我無法檢查POST數據,並保持它的樣子,但我想要做的是正確的方式。

這似乎是如果沒有執行語句(但POST數據必須在那裏,因爲我能夠取得$_POST['id']值,當if語句不使用)。

我也試圖把echo json_encode($row)以外的聲明,但它也沒有幫助。任何想法有什麼不對?

+0

你能告訴我們實際上失敗的代碼嗎? – 2013-03-17 15:06:13

+0

可以告訴我們錯誤..你正在面臨哪些... – 2013-03-17 15:08:12

+0

請編輯你的問題標題..它的太長.. – 2013-03-17 15:18:19

回答

0
if ($_SERVER['REQUEST_METHOD'] != 'POST') { 
    die("Invalid request method: " . $_SERVER['REQUEST_METHOD']); 
} 

if (isset($_POST['id'])) { 
    ... db code here ... 
} 

還請注意,您的廣告開放爲SQL injection attacks

+0

同意SQL注入。 – 2013-03-17 15:13:04

+0

我試過如果(isset($ _ POST ['id'])){..}但仍然存在相同的問題,ajax調用不會讓json數據重新獲得成功。 – Guferos 2013-03-17 15:25:07

+0

btw。我的代碼允許注入攻擊的主要問題是什麼?我會瀏覽您發佈的鏈接,但如果可以快速回答,應該更改哪些內容以使其更安全,我會感謝您的回覆。我看到,我應該把我的連接分開的文件,將是足夠的? – Guferos 2013-03-17 15:56:11

1
$.ajax({ 
    type: "POST", 
    url: "fetch.php", 
    data: id, 

http://api.jquery.com/jQuery.ajax/

data: [...] Object must be Key/Value pairs.

所以使該行

data: { id : id }, 

代替,那麼它應該工作。

+0

謝謝你的回答,但我沒有過去整個代碼,我的id變量在前面定義爲var id =「id =」+ pathid;所以我想我的POST請求中有key和value。 – Guferos 2013-03-17 15:49:00

0

您嘗試在你的代碼

  1. 檢查你是否有對PHP中的權請求頁面的後續testings。

  2. 在谷歌鉻合金看到右擊檢查那麼,元件控制檯選項卡的任何錯誤都出現在你的suceess

  3. :函數(MSG)加$( 「身體」)追加(MSG)

  4. 函數(結果){}

    error:function(xhr,err){alert(「readyState:」+ xhr.readyState +「\ nstatus:」+ xhr.status); alert(「responseText:」+ xhr.responseText); }