我在wordpress网站上运行了以下javascript:
var PostData = "Action=refresh-cart";
jQuery.ajax({
dataType: "text",
type: 'POST',
url : location.href,
cache: false,
data : PostData,
complete : function() { },
success: function(data) {
// jQuery("#loading-img").hide();
// jQuery("#join-class-div-3").html(data);
}
});
php是:
<?php
if(isset($_POST['Action'])) {
$Action = $_POST['Action'];
if($Action == "refresh-cart") {
echo '<div id="stuff"><p> done LOL </p></div>';
}
}
?>
所以我希望被送回:
<div id="stuff"><p> done LOL </p></div>
但我收到整整一页的HTML!?为什么!?
答案 0 :(得分:1)
它将从您的网址“location.href”呈现的网页返回所有内容
尝试在您的php代码中添加exit()
以在回显后停止它。
<?php
if(isset($_POST['Action'])) {
$Action = $_POST['Action'];
if($Action == "refresh-cart") {
echo '<div id="stuff"><p> done LOL </p></div>';
exit;
}
}
?>
<div>html content here will not be displayed</div>
答案 1 :(得分:0)
问题出现了,因为location.href是一个高级别的URL,所以wordpress在ajax请求周围注入了大量的html。
通过将location.url更改为对作为wordpress PHP API一部分的plugins.url()
的调用 - AJAX调用直接进入我的PHP页面并获得正确的响应:)