Javascript 在Select Change上更改PHP变量使用Ajax并在SQL查询中使用
我一直在尝试使用Ajax将select值的值发送到PHP文件,然后在SQL查询中使用,但似乎无法使其正常工作 我的选择选项Javascript 在Select Change上更改PHP变量使用Ajax并在SQL查询中使用,javascript,php,jquery,mysql,ajax,Javascript,Php,Jquery,Mysql,Ajax,我一直在尝试使用Ajax将select值的值发送到PHP文件,然后在SQL查询中使用,但似乎无法使其正常工作 我的选择选项 <select id="select"> <option value="yes">Yes</option> <option value="no">No</option> <option value="1">1</option> <option value="2">
<select id="select">
<option value="yes">Yes</option>
<option value="no">No</option>
<option value="1">1</option>
<option value="2">2</option>
</select>
然后在我的PHP文件中,我尝试了这个
if(isset($_POST["selected"]))
{
$selectedValue = $_POST['selected'];
$query = "SELECT * FROM customers WHERE delivered='$selectedValue'";
}
还有这个
$selectedValue = $_POST['selected'];
$query = "SELECT * FROM customers WHERE delivered='$selectedValue'";
警报会弹出正确的值,但不会更新PHP文件中的变量?请尝试下面的代码获取参数的值
$(document).ready(function () {
$('#select').on('change', function () {
alert($(this).val());
$.ajax({
type: "POST",
url: "phpsqlajax_genxml3_state.php",
data: {
selected: $(this).val()
},
success: function (data) {
console.log(data);
// Stuff
},
error: function (data) {
console.log(data);
// Stuff
}
});
});
});
在php代码中使用
$selectedValue = $_POST['selected'];
第一件事:
而不是写:
var selectValue=$“选择选项:已选定”。val 您只需使用: var selectValue=$'select'.val 第二件事: 您已经在函数外部设置了select的值,因此当“更改”侦听器运行时,selectValue的值已经设置,您永远不会覆盖它 您需要将变量的值设置为以下值:
$(document).ready(function() {
$('select').on('change', function() {
var selectValue = $(this).val();
第三件事:
如注释中所述,您正在以下代码中查找键selectValue:
$selectedValue=$\u POST['selectValue']
当您应该寻找:
$selectedValue=$_POST['selected']
因为这就是您通过AJAX发送的内容,这里:
data: {
selected: selectValue
}
第四件事:
您根本没有对用户的输入进行消毒,从而使您可以进行SQL注入
$query = "SELECT * FROM customers WHERE delivered='$selectedValue'";
为了防止SQL注入,您需要考虑更新到PDO:
$document.readyfunction{ $'select'。在'change'上,函数{ 警告这个值; var selectValue=$this.val; $.ajax{ 类型:POST,, url:phpsqlajax_genxml3_state.php, 数据:{ 已选:选择值 }, 成功:函数数据{ 警报数据; //东西 }, 错误:函数数据{ //东西 } }; }; }; 对 不 1. 2.在ajax中,您调用数据变量名称selected,但在PHP中,您指的是selectValue。尝试更改。此行var selectValue=$选择选项:selected.val;必须在函数中,才能在更改select.var selectValue=$“select option:selected”.val;时获取值,此代码将始终为您提供第一个下拉值,即使您在传递相同的第一个选定值时进行了更改,因为这是documentready函数之外的值。请将selected:selectValue更改为“selected:this.value”。其次,在Php中使用的变量名是错误的,请使用“$selectedValue=$\u POST['selected'];”假设您的PHP是从phpsqlajax_genxml3_state.PHP运行的,并且该文件实际上正在运行,我不明白为什么这不起作用$query=SELECT*FROM交付客户=“$selectedValue”;查询可以工作,但当我执行$selectedValue=$\u POST['selected']时就不能工作$query=SELECT*FROM交付客户=“$selectedValue”;我没有投反对票,但我明白为什么有人投了反对票。除了@MarmikPatels之外的所有答案都不能解决代码中的所有问题。我已经对上述所有内容进行了更改,但我的PHP文件中的变量仍然没有更新?如果您使用var_dump$selectedValue;它是否显示了正确的值?@MarkOverton如果我执行var\u dump$selectedValue,则得到NULL;如果您可以使用新代码更新您的问题,那么可能会更容易,这样我就可以尝试解决它仍然不起作用的原因。当我这样做时,我会收到值的警报,但另一个警报说“[object XMLDocument]”请使用警报$this.val;对于第二个警报,请使用console.logdataWhat is the issue?为什么OP应该尝试这个代码?请继续读。这是做什么用的?它为什么/如何回答这个问题?请继续读下去。
$query = "SELECT * FROM customers WHERE delivered='$selectedValue'";