我在网页上看到我的一个变量时遇到问题。这是我到目前为止所拥有的。
$(document).ready(function() {
$(function() {
$("#CheckID").click(function() {
// submit ajax job and display the result
var id = '$("#ID").val()'
$.ajax({
type: "POST",
url: "test_wID.php",
data: "id",
success: function(data) {
$('#rightselection').html(data)
}
});
});
});
});
这是我用来将ID输入到表单中的jquery函数,并将该ID与bash脚本一起使用。
这是php。
<?php
//Get the ID from the HTML form and use it with the check chunk script.
$id = $_POST['ID'];
if (is_null($id)){
echo "$id is null";
}
echo "Selected test Game ID: ".$id;
//print shell_exec('/opt/bin/tester $id');
?>
我注释掉了脚本,因为变量返回null,此时我只是想确保获取ID。
为了完整性,这里是我正在使用的表格。
print "<p><h3>ID: <input type=\"text\" id=\"ID\" /></h3></p>";
#print "<br>";
print "<p><button id=\"CheckID\">Check ID</button></p>";
当我点击按钮时,我在div中得到消息,该变量为null。所以我的问题是我在宣言中遗漏了什么? var id
如何为空?
感谢您提供的任何帮助。
答案 0 :(得分:2)
你在两点混合了字符串和变量引用。
首先,语句var id = '$("#ID").val()'
只为您的if
变量分配一个字符串,而不是jQuery调用的返回值。所以只需删除此处的'
。
其次,您再次为data
调用提供的ajax()
参数只包含字符串"id"
,而不是相应的值。在这里,您需要更改为{'id': id}
。
因此,在纠正所有内容后,您的代码应如下所示:
$(document).ready(function() {
$("#CheckID").click(function() {
// submit ajax job and display the result
var id = $("#ID").val();
$.ajax({
type: "POST",
url: "test_wID.php",
data: {'id': id},
success: function(data) {
$('#rightselection').html(data);
}
});
});
});
旁注:尝试将所有;
放在他们所属的位置。这可以防止一些很难跟踪的错误!
修改强>
正如@FlorianMargaine在评论中指出的那样,你的代码周围只需要一个包装器而不是两个。
答案 1 :(得分:2)
您应该考虑将jQuery代码更改为:
$.ajax({
type: "POST",
url: "test_wID.php",
data: {id: $("#ID").val()},
success: function(data) {
$('#rightselection').html(data)
}
});
答案 2 :(得分:1)
首先,以下两个片段等效:
$(document).ready(function() {
});
// Is equivalent to:
$(function() {
});
所以你的代码与:
相同$(document).ready(function() {
$(document).ready(function() {
});
});
平原无用,对吧?
其次,这一行是完全错误的:
var id = '$("#ID").val()';
您将字符串传递给id
变量。 $('#ID').val()
未评估。这相当于在PHP中执行此操作:
$id = '$_POST["id"]';
哪个是错的,对吧?
你想要这个:
var id = $('#ID').val();
顺便说一句,这个变量命名可以改进,HTML ID也是如此。
第三,你在data
的{{1}}选项中犯了同样的错误:
$.ajax
您只是将字符串传递给data: 'id'
选项。 您需要data
变量的值。
然后,如果你绝对想要一个字符串,我不推荐它。 jQuery需要一种特殊的字符串。你最好传递一个对象。像这样:
id
你知道为什么变量命名错了吗?您无法区分属性和值。如果您已完成以下操作:
data: {
id: id
}
你可以用这个:
var idValue = $('#ID').val();
哪种方式更具可读性。
答案 3 :(得分:0)
在您的$ .ajax电话中,您需要执行以下操作:
data : { id: id }
答案 4 :(得分:-1)
如果要在AJAX调用中传递参数,则需要传递一个类似于在URL中看到的GET字符串的字符串。类似于:d=123&name=test
更改行
var id = '$("#ID").val()'
要
var id = 'id=' + $("#ID").val();