我之前在Stack Overflow和其他网站上看过很多次,但以前的帖子似乎都没有帮助。
假设以下HTML代码:
<input maxlength="50" size="50" id="searchTxt" />
并假设以下AJAX调用:
$.ajax({
type: "POST",
url: "tdat.php",
data: {userresponse: $('#searchTxt').val()},
success: function(){
$('#searchTxt').val("")
}
})
应该发生的是数据“userresponse”被发布到服务器,具有输入框内的任何值,然后清空框中的输入。
稍后,我在tdat.php中有以下PHP代码:
<?php
if(isset($_POST['userresponse'])){
$userResponsePHP = $_POST['userresponse'];
switch($userResponsePHP){
case "yes":
echo "alert(\"hi\")";
break;
case "no":
echo "alert(\"negative!\")";
break;
default:
echo "alert(\"nope.\")";
break;
}
}
?>
即使AJAX调用完美无缺,PHP也不会响应。 PHP甚至没有收到“userresponse”的值。我检查了文件路径,localhost连接,向“userresponse”添加引号,以及其他线程中陈述的几乎所有其他小问题,但问题仍然存在。 AJAX调用清除了searchTxt的值,因此它是一个成功的发送。控制台中未显示任何错误。为什么会这样?
答案 0 :(得分:2)
尝试以下方法:
$.ajax({
type: "POST",
url: "tdat.php",
data: {userresponse: $('#searchTxt').val()},
success: function(data){
alert(data.message);
$('#searchTxt').val("");
}
})
PHP:
<?php
header('Content-Type: application/json');
if(isset($_POST['userresponse'])){
$userResponsePHP = $_POST['userresponse'];
switch($userResponsePHP){
case "yes":
echo json_encode(["message"=>"hi"]);
break;
case "no":
echo json_encode(["message"=>"negative"]);
break;
default:
echo json_encode(["message"=>"nope"]);
break;
}
}
?>
注意:如果页面刷新,则表示您没有执行任何ajax
答案 1 :(得分:0)
以下代码片段有效,但通常建议不要使用eval我在这种情况下使用eval,因为您在服务器端(在PHP中)具有JavaScript警报功能。你应该做的是回显文本,然后在Javascript端调用alert函数。但是,为了尽可能少地改变您的代码,我将其保留原样并且仅在JavaScript中进行更改。
在此示例中需要注意的两件事情我使用您接受的值“是”初始化文本框。当然你可以更改这个,所以ajax调用就是按一下按钮(不确定你的用例是什么)
您忘记的一件小事是阅读成功回调中的数据参数。
<script src="https://code.jquery.com/jquery-2.2.3.min.js" integrity="sha256-a23g1Nt4dtEYOj7bR+vTu7+T8VP13humZFBJNIYoEJo=" crossorigin="anonymous"></script>
<script>
$( document ).ready(function() {
$('#searchTxt').val("yes");
$.ajax({
type: "POST",
url: "tdat.php",
data: {userresponse: $('#searchTxt').val()},
success: function(data, textStatus, jqXHR) {
eval(data);
$('#searchTxt').val("")
}
})
});
</script>
<input maxlength="50" size="50" id="searchTxt" />
答案 2 :(得分:0)
首先修改 ajax 函数,如下所示:
$('#searchTxt').change(function(){
$.ajax({
type: "POST",
url: "tdat.php",
data: {userresponse: $('#searchTxt').val()},
success: function(res){
$('#searchTxt').val("");
console.log(res);
}
});
});
在 searchTxt 的更改事件中,您的ajax调用将被执行,然后检查控制台。