2014-01-26 12 views
0

我有一個Ajax調用:在我的ajax調用之後,這個帖子怎麼會變得空白?

function change(x){ 
    var id=x; 
    alert(id); 
    $.ajax({ 
     url: "http://localhost/kidsKnitsDB/edit.php", 
     type: "post", 
     data: JSON.stringify(id), 
     beforeSend: function(response){alert('Sending');}, 
      success: function(response){ alert('success');}, 
      error: function(response){alert('failed');}, 
      complete: function(response){window.location="http://localhost/kidsKnitsDB/edit.php";}, 
    }); 
} 

這是從這個獲取數據:

<?php for($r=0; $r<count($result); $r++){?> 
    <tr> 
     <?php for($c=0; $c<9; $c++){?> 
      <td><?php echo $result[$r][$c];?></td> 
     <?php }?> 
     <td><button name="edit<?php echo $r;?>" onclick="change(<?php echo $result[$r][0];?>)">edit</button></td> 
    </tr> 
<?php }?> 

,它應該被髮布到:

<?php 
    $db= new PDO("mysql:host=example;dbname=example", "root", "example"); 
    $id=$_POST['id']; 
    $query= $db->prepare("SELECT * FROM table WHERE Id = :parameter"); 
    $query->bindParam(':parameter', $id, PDO::PARAM_STR); 
    $query->execute(); 
    $result=$query->fetch(); 
    $name=$result['Name']; 
?> 
<script type="text/javascript">alert(<?php echo $id;?>);</script> 
<h1>Edit for <?php echo $name;?></h1> 
</br> 
<form id="editForm" action="sucess.php" method="POST"> 
    <lable>sale price</lable> 
    <input type="number" id="salePrice" name="salePrice"> 
    </br> 
    <lable>cost</lable> 
    <input type="number" id="cost" name="cost"> 
    </br> 
    <lable>contents</lable> 
    <input type="text" id="contents" name="contents"> 
    </br> 
    <lable>on sale</lable> 
    <input type="checkbox" id="onSale" name="onSale"> 
    </br> 
    <lable>image</lable> 
    <input type="image" id="image" name="image"> 
    </br> 
    <lable>active</lable> 
    <input type="checkbox" id="active" name="active"> 
    </br> 
</form> 

然而,$ id爲空,我相信這是因爲阿賈克斯打電話,但我不確定。如果任何人都可以提供幫助,那會很棒。

+0

你只是發送一個數字,而不是一個對象,所以php代碼不知道你稱它爲id。 – some

+0

會把它變成'data:{'id':id}'工作? –

+0

也許,看我的答案。 – some

回答

1

第一個問題

你只是發送數量,而不是一個對象,所以PHP代碼:不知道你怎麼稱呼它的ID。

變化

function change(x){ 
    var id=x; 

function change(x){ 
    var id={id:x}; 

問題二

隨着這段代碼:

complete: function(response){window.location="http://localhost/kidsKnitsDB/edit.php";} 

你在ajax調用完成後做一個重定向。

這是發生了什麼:

  1. 第一個AJAX請求被髮送到服務器。既然你解決了第一個問題,它現在得到了後變量命名的id中的數字。
  2. 服務器生成頁面並將其作爲對您的ajax調用的回覆。
  3. 當ajax調用完成後,您將手動重定向到您剛剛發送ajax請求的同一頁面,但是您不需要提供任何變量即可。
  4. 瀏覽器加載頁面,但由於請求中未給出id,所以id爲空。

從你的記錄文件,你可以看到,它提出了兩個要求,先用和id,第二沒有任何變量:

[Sun Jan 26 19:08:29 2014] Array\n(\n [id] => 2\n)\n 
[Sun Jan 26 19:08:30 2014] Array\n(\n)\n 

我認爲AJAX調用正在使問題更加複雜比在這種情況下需要的。鏈接到http://localhost/kidsKnitsDB/edit.php?id=x其中x是數字更簡單。然後,您應該在php代碼中將$ _POST更改爲$ _GET。

如果你仍然想使用AJAX,你應該在頁面的某個地方插入你從請求中獲得的響應,而不是像現在這樣做一個重定向。

+0

不,它仍然是空白的,但我覺得你是對的,問題依然存在。 –

+0

在處理帖子的php代碼中,執行'error_log(print_r($ _ POST,true));'並且檢查你的error_log你已經得到了哪些變量(或者重寫你的javascript查詢,以便看到結果並打印結果) – some

+0

這就是錯誤日誌顯示'[Sun Jan 26 19:08:29 2014] [error] [client 127.0.0.1] Array \ n(\ n [id] => 2 \ n)\ n,referer :http://localhost/kidsKnitsDB/index.php [Sun Jan 26 19:08:30 2014] [error] [client 127.0.0.1] PHP注意:Undefined index:id在/ var/www/kidsKnitsDB/edit中。 php on line 13,referer:http://localhost/kidsKnitsDB/index.php [Sun Jan 26 19:08:30 2014] [error] [client 127.0.0.1] Array \ n(\ n)\ n,referer :http:// localhost/kidsKnitsDB/index.php' –

相關問題