Php 为什么在使用ajax时会出现400(错误请求)错误?
我有一个调用js函数的下拉列表:Php 为什么在使用ajax时会出现400(错误请求)错误?,php,ajax,codeigniter,Php,Ajax,Codeigniter,我有一个调用js函数的下拉列表: <select class="form-control" name="product" id="product" onchange="populateProductLine(this.value)"> <option selected="selected" value="" disabled="">Select Product</option>
<select class="form-control" name="product" id="product" onchange="populateProductLine(this.value)">
<option selected="selected" value="" disabled="">Select Product</option>
<?php foreach ($products as $product) { ?>
<option value="<?=$product['productId']?>"><?=$product['productName']; ?></option>
<?php } ?>
</select>
为什么会出现400(错误请求)错误?我使用Codeigniter。js函数然后使用ajax调用控制器方法:
function populateProductLine(productId) {
if (productId == '') {
//document.getElementById("chargeable").value = "";
} else {
if (window.XMLHttpRequest) {
xmlhttp = new XMLHttpRequest();
} else {
xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange = function() {
if (this.readyState == 4 && this.status == 200) {
var myObj = JSON.parse(this.responseText);
console.log(myObj);
}
};
xmlhttp.open("GET","<?php echo base_url(); ?>products/getproduct(" + productId + ")",true);
xmlhttp.send();
}
<script type="text/javascript">
function populateProductLine(productId) {
if (productId == '')
{
alert('if');
}
else
{
$.ajax({
url:"http://localhost/narson/stackoverflow/getproduct",
type:"post",
data:{'productId':productId},
datatype: "json",
success:function(data,status)
{
console.log(data);
}
});
}
}
</script>
public function getproduct() {
$productId = $this->input->post('productId');
$myArr = array("John", "Mary", "Peter", "Sally");
$myJSON = json_encode($myArr);
echo $myJSON;
}
函数populateProductLine(productId){
如果(productId='')
{
警报(“如果”);
}
其他的
{
$.ajax({
url:“http://localhost/narson/stackoverflow/getproduct",
类型:“post”,
数据:{'productId':productId},
数据类型:“json”,
成功:功能(数据、状态)
{
控制台日志(数据);
}
});
}
}
公共函数getproduct(){
$productId=$this->input->post('productId');
$myArr=数组(“约翰”、“玛丽”、“彼得”、“萨利”);
$myJSON=json_encode($myArr);
echo$myJSON;
}
在Codeigniter中,不允许提交()
URI字符,并将导致400(错误请求)
http状态
修复ajax请求上的URI,如下所示:
xmlhttp.open("GET","<?php echo base_url(); ?>products/getproduct/" + productId,true);
xmlhttp.open(“GET”、“products/getproduct/”+productId,true);
我建议您使用ajax进行更简单、更容易的请求。谢谢hasta。我不知道为什么我要在url的括号里传递一个参数,哈哈。
xmlhttp.open("GET","<?php echo base_url(); ?>products/getproduct/" + productId,true);