[英]Passing a php variable to another php file using ajax
我有一些div
類,它們的content-full
類,它們是根據MySQL表中存儲的數據創建的。 例如,如果我有3行,將有3 div
s。
當我點擊任何的div
當時的與ID為相關的數據div
應該內顯示div
content-full
。 然而,隨着最后相關內容div
出現時,我對任何的點擊divs
,因為我沒有通過任何一種可用於指定點擊變量ID的div
。
<script type="text/javascript">
$(document).ready(function() {
$(".content-short").click(function() { //
$.ajax({
type: "GET",
url: "content.php", //
dataType: "text",
success: function(response){
$(".content-full").html(response);
}
});
});
});
</script>
content.php
<?php
include "mysql.php";
$query= "SELECT Content FROM blog limit 1";
$result=mysql_query($query,$db);
while($row=mysql_fetch_array($result))
{
echo $row['Content'];
}
mysql_close($db);
?>
是否有其他方法可以執行此操作,或者我需要對其進行更正才能使其正常工作?
謝謝
您可以查看將參數傳遞給腳本的過程,通常就像一個ID,您可以通過該參數在數據庫中進行搜索。
最簡單的方法是在url上獲取參數url: "content.php?param=2",
然后在php中: <?php $param = $_GET['param']; ...
<?php $param = $_GET['param']; ...
首先,您必須將實際數據傳遞給您的PHP腳本。 讓我們首先處理JavaScript的結束。 我將假設您的HTML代碼是使用php打印的,並且您可以創建如下內容: <div class=".content-short" data-id="2" />
:
$(".content-short").click(function() {
// get the ID
var id = $(this).attr('data-id');
$.ajax({
type: "post",
url: "content.php",
data: 'id=' + id
dataType: "text",
success: function(response){
$(".content-full").html(response);
}
});
});
下一步是讀取您使用腳本傳遞的值:
<?php
include "mysql.php";
// Use the $_POST variable to get all your passed variables.
$id = isset($_POST["id"]) ? $_POST["id"] : 0;
// I am using intval to force the value to a number to prevent injection.
// You should **really** consider using PDO.
$id = intval($id);
$query = "SELECT Content FROM blog WHERE id = " . $id . " limit 1";
$result = mysql_query($query, $db);
while($row=mysql_fetch_array($result)){
echo $row['Content'];
}
mysql_close($db);
?>
到這里,我已經修改了您的查詢以允許按ID提取。 有兩個主要警告:
首先: 您不應該再使用mysql_
函數,它們已被棄用,如果尚未發生,將很快將其從PHP中刪除! ,其次:我不能保證查詢能夠正常工作,當然,我不知道您的數據庫結構是什么。
最后一個問題是:結果為空時該怎么辦? 好吧,通常AJAX調用使用JSON對象發送和響應,因此最好這樣做,替換以下行:
echo $row['Content'];
有了這個:
echo json_encode(array('success' => $row['Content']));
現在,在JS的success
函數中,您應該嘗試檢查是否有成功消息。 首先,將dataType
更改為json
或完全刪除該行。 現在替換此成功函數:
success: function(response){
$(".content-full").html(response);
}
到這個:
success: function(response){
if(response.success) $(".content-full").html(response);
else alert('No results');
}
這里是mysql_函數的棄用“注意”: http ://php.net/manual/en/changelog.mysql.php
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.