我正在尝试将变量发送到进行AJAX调用的同一页面.
只有当我分离PHP脚本(例如process.php并相应地更改AJAX URL)时,我才会收到成功的结果.
index.php
$(function() {
$('form').submit(function(e) {
e.preventDefault();
$.ajax({
type : 'POST',
url : 'index.php',
data : $(this).serialize(),
dataType : 'json',
encode : true
})
.done(function(data) {
$('#result').html(data);
})
});
});
$data = array();
if(isset($_POST['name'])) {
$data = 'You entered: ' . $_POST['name'];
echo json_encode($data);
}
?>
是否可以使用同一页面捕获和处理我们使用AJAX传递的变量?
解决方法:
你在AJAX设置中设置dataType:json,这样就应该回显一个json object而不是一个字符串(HTML).使用exit()而不是echo,并将你的PHP放在页面的最顶层.因此,在检查$_POST [‘name’]是否存在之前,不会回显任何HTML.
另一件事是你的$data = array()转换为该行的字符串:
$data = 'You entered:' . $_POST['name'];
它应该是$data [] = …
$data = array();
if(isset($_POST['name'])) {
$data[] = 'You entered:' . $_POST['name'];
exit(json_encode($data));
}
?>
$(function() {
$('form').submit(function(e) {
e.preventDefault();
$.ajax({
type : 'POST',
url : 'index.php',
data : $(this).serialize(),
dataType : 'json',
encode : true
})
.done(function(data) {
$('#result').html(data);
})
});
});
标签:jquery,php,ajax
来源: https://codeday.me/bug/20190623/1275127.html