[英]Response from PHP to JS doesn't work after switching to JQuery
所以,我正在開發自己的博客類型的網站,最近在嘗試從我的代碼中刪除 JS 時遇到了一個問題。 所以我有 show.js 和 showpost.php。 這是我在使用 ajax js 時顯示博客文章的 JS 代碼:
load: function () {
posts.ajax({ req: "show" }, function () {
document.getElementById("cwrap").innerHTML = this.response;
});
},
一切正常。 但是當我嘗試用 JQuery 版本替換它時
jQuery.ajax({
type: "GET",
url: 'app/showpost.php',
dataType: 'text',
success: function (data) {
console.log(data);
console.log("okokok");
document.getElementById("cwrap").innerHTML = this.response;
}
});
它無法按預期工作。 現在解釋我的showpost:php 文件是如何工作的:
<?php
include_once 'config.php';
echo('');
try {
$stmt = $pdo->prepare("SELECT `name`, `likes`,`imagename`,`comment_id`, `timestamp`, `message` FROM `posts` WHERE `post_id`=? ORDER BY `timestamp` DESC");
$stmt->execute([$_POST['pid']]);
} catch (Exception $ex) {
die($ex->getMessage());
}
while ($r = $stmt->fetch(PDO::FETCH_NAMED)) {
?>
<div id="post" style="box-shadow: 0 .15rem 1.75rem 0 rgba(58,59,69,.15)!important;">
<button id="<?=$r['comment_id']?>" name="like" class="btn" style=" float: right;" action="likepost.php" method="post"><svg xmlns="http://www.w3.org/2000/svg" enable-background="new 0 0 24 24" height="24" viewBox="0 0 24 24" width="24"><g><rect fill="none" height="24" width="24" y="0"/></g><g><g><path d="M13.12,2.06L7.58,7.6C7.21,7.97,7,8.48,7,9.01V19c0,1.1,0.9,2,2,2h9c0.8,0,1.52-0.48,1.84-1.21l3.26-7.61 C23.94,10.2,22.49,8,20.34,8h-5.65l0.95-4.58c0.1-0.5-0.05-1.01-0.41-1.37C14.64,1.47,13.7,1.47,13.12,2.06z M3,21 c1.1,0,2-0.9,2-2v-8c0-1.1-0.9-2-2-2s-2,0.9-2,2v8C1,20.1,1.9,21,3,21z"/></g></g></svg></button>
<date><?=$r['timestamp']?></date>
<h4>Bugs: <?=$r['likes']?></h4>
<h3><?=$r['name']?></h3>
<div class="message">
<?=$r['message']?>
</div>
<img src="static/<?=$r['imagename']?>">
</div>
<?php }
$stmt = null;
$pdo = null;
?>
如您所見,它是一個 Php 文件,帶有一點 html。 當我使用 Xhr 時它運行良好,但現在使用 Jquery 它不起作用! 請幫忙!
編輯: document.getElementById("cwrap").innerHTML = data;
沒有任何改變,這可能是我的 showpost.php 沒有發送 html 部分的問題。
問題出在您的success(data)
回調 function 中。
document.getElementById("cwrap").innerHTML = this.response;
您正在獲取data
,但您正在使用this.response
,這將是未定義的,因為沒有定義這樣的變量。 ajax 調用中的 dataType 也應該是 html 即dataType: 'html',
。 所以它應該是這樣的:
jQuery.ajax({
type: "GET",
url: 'app/showpost.php',
dataType: 'html',
success: function (data) {
console.log(data);
console.log("okokok");
document.getElementById("cwrap").innerHTML = data;
}
});
數據類型需要是 html 或 json
jQuery.ajax({
type: "GET",
url: 'app/showpost.php',
dataType: 'HTML',
success: function (data) {
console.log(data);
console.log("okokok");
document.getElementById("cwrap").innerHTML = this.response;
}
});
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.