我正在使用ajax在同一页面上发布数据,并尝试使用以下脚本回显发布的数据。
$('button').click(function(){
$.ajax({
type: "post",
data: $("form").serialize(),
beforeSend: function(){},
success: function(data){alert(data)},
error: function(err) {alert(err.responseText);}
})
})
和php脚本是:
<?php echo isset($_POST['data']) ? $_POST['data'] :''; ?>
我的HTML是:
<form>
<input type="hidden" name="data" value="to_success"/>
<button type="button">Click Me</button>
</form>
我的问题是php不会在页面上回显发布的数据,但是当我在另一个php文件上发布表单数据时,这是相同的PHP脚本; php能够回显发布的数据,ajax是警报。请帮我解决这个问题。感谢
答案 0 :(得分:0)
如果没有将整个PHP页面视为一个列表,很难说清楚,但从您的描述来看,这听起来像是因为您宣布.click()
事件的方式或者您发布到页。前者更有可能。
$.ajax()
请求将使用XMLHttpRequest对象POST到您的PHP脚本。然后,PHP脚本应该获取这些值,并从脚本中的纯文本和插入的echo'd值的组合生成返回字符串。然后应该由success
方法的回调函数接收,并在警报框中将您的页面警告为一团HTML文本。
实际上,如果我使用以下代码就会发生这种情况:
<!DOCTYPE html>
<html>
<head>
<script src="https://code.jquery.com/jquery-2.1.3.min.js"></script>
<script>
$(document).ready(function() {
$('button').click(function() {
$.ajax({
type: "post",
data: $("form").serialize(),
beforeSend: function() {},
success: function(data) {
alert(data);
},
error: function(err) {
alert(err.responseText);
}
});
});
});
</script>
</head>
<body>
<?php echo isset($_POST['data']) ? $_POST['data'] :''; ?>
<form>
<input type="hidden" name="data" value="to_success"/>
<button type="button">Click Me</button>
</form>
</body>
</html>
但是,如果我注释掉$(document).ready(function(){
及其相应结尾});
的行,那么当我点击时没有任何反应。
因此,请尝试将.click()
事件定义包装在$(document).ready()
。