将 AJAX 传递给 PHP 时遇到问题,而是未定义
Trouble passing AJAX to PHP, gets undefined instead
我正在尝试使用 AJAX 在脚本中传递变量,以便我可以在我的 PHP 文档中使用它。
这个想法是传递使用javascript选择的值,然后将该值传递给SQL查询。
下面我尝试使用 AJAX 传递变量性别,但它打印出未定义的何时应该打印出男性
任何帮助都会被赞赏,谢谢
<!DOCTYPE html>
<html>
<head>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js">
</script>
<script>
var gender = 'male';
$(".generate").click(function(){
$.ajax({
url: 'santa.php', //This is the current doc
type: "GET",
data: ({gender:gender}),
success: function(data){
console.log(data);
}
});
});
</script>
</head>
<body>
<button class="generate">Generate</button>
<?php
$userAnswer = $_GET['gender'];
echo $userAnswer;
?>
</body>
</html>
这里有几点问题。
首先, $(".generate")lick(function(){ ... }
是在DOM中定义".generate"对象之前执行的。 此部分应包装在 $(document).ready( )
块中,以便仅在按钮存在于 DOM 中后注册单击操作。
然后是让 AJAX 正确触发的问题。 另一个答案有解决方案;一起取出dataType
。 data: (gender: gender})
中的括号是不必要的,但无害。
最后,设计考虑。 您使用相同的脚本来回答 JSON 响应,因此当页面首次加载时,您将生成一个 PHP 通知,指出$_GET['gender']
未定义(根据您的配置,可能会消除此错误,但我得到类似 Undefined index:gender in...然后,当 AJAX 响应通过时,它是一个完整的网页,其中包含原始文档中的所有 Javascript 和 HTML。
您可能希望根据是否定义$_GET['gender']
来更改完整响应,而不是这样做。
我已经发布了一个工作版本,因为我不得不自己破解这些东西。 希望对您有所帮助!
<?php
if( array_key_exists( 'gender', $_GET ) ){
$userAnswer = $_GET['gender'];
echo $userAnswer;
exit;
}
?><!DOCTYPE html>
<html>
<head>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js">
</script>
<script>
var gender = 'male';
$(document).ready( function() {
$(".generate").click(function(){
$.ajax({
url: document.location, //This is the current doc
type: "GET",
// dataType:'json', // add json datatype to get json
data: ({gender:gender}),
success: function(data){
console.log(data);
}
});
});
});
</script>
</head>
<body>
<button class="generate">Generate</button>
</body>
</html>
替换: dataType:'json', // add json datatype to get json
data: ({gender:gender}),
自: data: {gender:gender},
和:
<?php
$userAnswer = $_GET['gender'];
echo $userAnswer;
?>
我会按如下方式进行 aJax 调用
$(".generate").click(function(){
$.ajax({
url: 'santa.php', //This is the current doc
type: "GET",
data: "gender="+gender,
success: function(data){
console.log(data);
}
});
- 如何消除代码中的未定义和其他问题
- 组件生命周期问题/无法处理未定义的问题
- JavaScript/jQuery JSON数组问题-值为未定义
- 使用Breeze脱机数据时出现未定义的问题不是函数
- 如何使用警报进行调试来解决(未定义的)时间问题
- SJCL的问题“;无法读取属性'替换'“未定义”;
- JSON JavaScript 未定义的变量问题
- 创建可在任何地方使用的 JS 函数?范围和功能“未定义”的问题
- 将 AJAX 传递给 PHP 时遇到问题,而是未定义
- 尝试添加到根父节点时出现 KendoUI 未定义节点问题
- 榆树早午餐编译问题:“拆分”未定义
- JavaScript,jquery中未定义的VAR的问题.如何
- D3 JS - 未捕获的类型错误:无法读取未定义的属性“长度” - 似乎与数据问题有关
- 范围问题/“未定义不是一个函数”
- jQuery实时问题-未定义不是函数
- Grunt动态变量问题(未定义)
- Google Chart IE9问题(未定义)
- Angular.js中的input[radio]问题未定义且未检查
- 可融合的自定义信息窗口;绑定问题-未定义的属性
- 猫鼬问题:未定义架构