php - 为什么我在使用 ajax 时会收到 400(错误请求)错误?
问题描述
我有一个调用 js 函数的下拉列表:
<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>
然后 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();
}
}
控制器方法(现在只是虚拟数据):
public function getproduct($product_id) {
$myArr = array("John", "Mary", "Peter", "Sally");
$myJSON = json_encode($myArr);
echo $myJSON;
}
为什么我会收到 400(错误请求)错误?我使用 Codeigniter。
解决方案
js 函数然后使用 ajax 调用控制器方法:
<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;
}
推荐阅读
- php - AJAX-如何查询特定表行
- android-camera2 - Camera2 API 在 OnePlus 7 Pro 中不起作用
- r - R中变量中特定值的子集数据
- java - 需要一个逻辑来获取元素
- python - Plotly python shared_x 轴与子图,不能使用后缀
- python - 有人能告诉我这里发生了什么吗
- automated-tests - NightWatchJS - 登录页面 - 如何测试密码是否被屏蔽
- python - treemap() 在 plotly.express 中得到了一个意外的关键字参数“路径”
- postgresql - 我是 PostgreSQL 新手,目前正在为表编写触发器。使用下面的代码
- symfony - Symfony 4:MailerInterface 无法在 SMTP 服务器上进行身份验证