2014-05-22 66 views
-1

使用ajax將testNew.php文件加載到Cart.html文件中。它加載testNew.php文件,但是當我點擊添加testNew.php中的按鈕時,在數據庫中輸入0,並且一旦我點擊添加按鈕頁面自身刷新。我的問題是,我不希望頁面刷新,並希望添加按鈕執行testNew.php文件(它可以正常工作)相同的操作。使用ajax加載php文件

<script type='text/javascript' src='http://code.jquery.com/jquery-1.6.2.js'> 
</script> 
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js">  
    </script> 
<script> 

    $(document).ready(function() { 

    $("#product").click(function() {     

    $.ajax({ //create an ajax request to load_page.php 
    type: "GET", 
    url: "testNew.php",    
    dataType: "html", //expect html to be returned     
    success: function(response){      
     $("#responsecontainer").html(response); 
     //alert(response); 
    } 

    }); 
}); 
}); 

</script> 
</head> 
    <body> 

    <table border="1"> 
    <tr> 
    <td> 
    <input type="button" id="product" name="product"value="View all products"/> 
    </td> 
</tr> 
</table>   
<div id="responsecontainer"></div> 

這是testNew.php,它能正常工作。

<?php 
include'connect.php'; 

    $image = isset($_REQUEST['image']) ? $_REQUEST['image'] : ""; 
    $id = isset($_REQUEST['id']) ? $_REQUEST['id'] : ""; 
    $name = isset($_REQUEST['name']) ? $_REQUEST['name'] : ""; 
    $price= isset($_REQUEST['price']) ? $_REQUEST['price'] : ""; 
    $sql="SELECT * FROM product"; 
    $result = mysql_query($sql); 
    if($result>0){ 
    ?> 
    <table border='1'> 
<tr> 
<th>Id</th> 
    <th>Image</th> 
    <th>Name</th> 
    <th>Price MUR</th> 
    </tr> 
    <?php 

    while ($row = mysql_fetch_array($result)){ 

     ?>     

    <tr> 
     <td><?php echo ($row['id']); ?></td> 
     <td><img src=<?php echo $row['image'] ?> width='120' 
        height='100'/></td> 
     <td><?php echo htmlspecialchars($row['name']); ?></td> 
     <td><?php echo htmlspecialchars($row['price']); ?></td> 
      <td> 
     <form method="POST" action="" > 
      <input type="hidden" name="id" value="<?php echo $row['id']; ?>" /> 
      <input type="hidden" name="name" value="<?php echo $row['name']; ?>" /> 
      <input type="hidden" name="image" value="<?php echo $row['image']; ?>" /> 
      <input type="hidden" name="price" value="<?php echo $row['price']; ?>" /> 
      <input id="submit" type="submit" name="submit" value='Add to cart' 
      onclick="add()"/> 
     </form> 
     </td> 
     </tr> 
    <?php 
     } 
    ?> 
    </table> 
    <?php 
} 

$insert = "INSERT INTO product_add(id, name, price) VALUES ('$id', '$name','$price')"; 
    $insertQuery=mysql_query($insert); 

    ?> 
+2

刪除第一個jqeury庫。沒有必要添加兩個庫。 – Jai

+0

提交FORM刷新/重定向頁面時,您需要防止此默認行爲。順便說一句,我沒有看到任何add()方法 –

+0

該頁面刷新,因爲'form'在頁面級提交'POST'請求​​。如果你想使用AJAX,那麼你需要爲阻止提交的表單編寫一個處理程序。大概你的'add'函數應該這樣做,但是你沒有向我們展示那個函數。至於向數據庫中添加0,我們不可能知道這裏的代碼是由什麼引起的。你將什麼插入數據庫?從表單文章中提供的價值是多少? – David

回答

1

你在思想的錯誤實際上是要包括通過AJAX一個形式的HTML,然後加載到你的頁面後,該表格上的action屬性指的是頁面本身(加載HTML到您的網頁與AJAX不能像iframe一樣工作),它沒有相關的代碼來實際解析和插入數據庫。

您需要製作一個單獨的頁面,只接受幾個參數並將這些參數插入到數據庫中。然而,在你這樣做之前,你需要閱讀下面的內容:

我打算談談你的代碼的安全性。

$_REQUEST既指$_GET也指$_POST,您真的只想要$_POST,因爲您只想處理通過表單提交的內容。

你永遠不會消毒你的輸入,這樣一個人可以製作一個網址,說phpNew.php?id='; DROP TABLE wooptiedoo。這是一個簡化的例子,但是你應該仔細看看mysql_real_escape_string文檔以及可能的一些關於「sql注入」的指南。

之後,那些相同的變量可以用於XSS,這意味着某人可以使用您的頁面爲訪問該網站並相信您的域名的用戶提供隨機HTML。我建議你查看htmlentities函數和/或閱讀「跨站腳本」攻擊。

並且爲了結束這一切,mysql_*函數已被棄用,您應該使用mysqli_*函數。