Javascript ajax数据在MVC的控制器函数中变为空
我是ajax和MVC框架的初学者。我必须找到是否存在使用ajax的移动设备。我尝试了以下代码 查看Javascript ajax数据在MVC的控制器函数中变为空,javascript,php,ajax,codeigniter,Javascript,Php,Ajax,Codeigniter,我是ajax和MVC框架的初学者。我必须找到是否存在使用ajax的移动设备。我尝试了以下代码 查看 if(mno.match(phoneno)){ //alert(mno); $.ajax({ url: "/api/sales/existmobile", type:"POST", //ContentType: 'application/json', // dataType: "json
if(mno.match(phoneno)){
//alert(mno);
$.ajax({
url: "/api/sales/existmobile",
type:"POST",
//ContentType: 'application/json',
// dataType: "json",
//async: false,
//data:{'data': mno},
//data:{data: JSON.stringify(mno)},
data:{data: JSON.stringify(6547655566)},
success: function (data, textStatus, jqXHR) {
console.log('success',data);
if(data === false){
alert('Mobile number already exists!');
$( "#custmobilenumber" ).focus();
}
},
error: function (jqXHR, textStatus, errorThrown) {
console.log(textStatus);
}
});
}
路线
case "sales/existmobile":
$sale = new Sale($data);
$result = $sale->checkMobileExistSale($result);
break;
case "sales/existmobile":
$sale = new Sale($data);
$result = $sale->checkMobileExistSale($data); // send $data here not $result
break;
控制器
public function checkMobileExistSale($result)
{
print_r($this->data);
// $custMdl = new CustomerModel();
// $mobileExistResult = $custMdl->checkMobileExist($this->data);
// return $mobileExistResult;
}
public function checkMobileExistSale($result)
{
echo $result;
// print_r($result);
// or try $result = $this->input->post();
// $custMdl = new CustomerModel();
// $mobileExistResult = $custMdl->checkMobileExist($result); // send relevant data here
// return $mobileExistResult;
}
型号
public function checkMobileExist($mobile){
$sql = 'SELECT * FROM customers WHERE mobile= :mobile';
$placeholders = [':mobile'=>$mobile];
$users = $this->select($sql, $placeholders);
if (count($users) > 0) {
return false;
} else {
return true;
}
}
当我打印传入控制器的ajax数据时,它将为空。在inspect的网络(XHR)->标题->表单数据中,我可以看到从ajax传递的数据。但是网络(XHR)->响应,它显示为空
我用stackoverflow anwsers和谷歌搜索找到的所有可能的方法进行了调试,但没有任何用处。我不知道代码哪里出错了
请帮助和指导。提前感谢。在ajax中,您使用的是post方法,然后必须在controller中使用
$this->input->post('data');
试试这个,它会对你有用的。在ajax中,你使用的是post方法,然后你必须在controller中使用
$this->input->post('data');
试试这个,它会对你有用的我已经为你的问题编写了一个可能的修正代码,我已经在必要的地方提到了注释,看看它是否对你有帮助。:)
路线
case "sales/existmobile":
$sale = new Sale($data);
$result = $sale->checkMobileExistSale($result);
break;
case "sales/existmobile":
$sale = new Sale($data);
$result = $sale->checkMobileExistSale($data); // send $data here not $result
break;
控制器
public function checkMobileExistSale($result)
{
print_r($this->data);
// $custMdl = new CustomerModel();
// $mobileExistResult = $custMdl->checkMobileExist($this->data);
// return $mobileExistResult;
}
public function checkMobileExistSale($result)
{
echo $result;
// print_r($result);
// or try $result = $this->input->post();
// $custMdl = new CustomerModel();
// $mobileExistResult = $custMdl->checkMobileExist($result); // send relevant data here
// return $mobileExistResult;
}
我已经为您的问题编写了一个可能的纠正代码,我已经在必要的地方提到了注释,看看它是否对您有帮助。:)
路线
case "sales/existmobile":
$sale = new Sale($data);
$result = $sale->checkMobileExistSale($result);
break;
case "sales/existmobile":
$sale = new Sale($data);
$result = $sale->checkMobileExistSale($data); // send $data here not $result
break;
控制器
public function checkMobileExistSale($result)
{
print_r($this->data);
// $custMdl = new CustomerModel();
// $mobileExistResult = $custMdl->checkMobileExist($this->data);
// return $mobileExistResult;
}
public function checkMobileExistSale($result)
{
echo $result;
// print_r($result);
// or try $result = $this->input->post();
// $custMdl = new CustomerModel();
// $mobileExistResult = $custMdl->checkMobileExist($result); // send relevant data here
// return $mobileExistResult;
}
尝试在不使用ajax的情况下执行checkMobileExistSale方法并打印结果。尝试在不使用ajax的情况下执行checkMobileExistSale方法并打印结果。感谢您的帮助。它起作用了。这实际上是一个错误。我已经修改了我的代码。但现在若ajax响应为真,那个么就不会出现if循环,也不会检查其他条件。我该怎么办?请在这方面提供帮助。在您的模型中检查
$users
中的值,我认为您运行的查询是错误的。从该查询中,我将返回true/false,并在ajax检查响应中返回。如果为false,则发出警报,否则我必须说退出if(mno.match(phoneno))
循环并检查其else。这是不可能的。如果ajax返回true,我已经编写了'if(response='false'){alert('Mobile number已经存在!');$(“#custmobilenumber”).focus();}否则if(response='true'){return true;//这样它将从if(mno.match(phoneno))返回,但不会出来}`请echo$users
并查看它是否有任何值,如果没有,则说明您的查询是错误的,如果是,则通过控制台检查success中的值。记录(数据)
并查看控制器返回的数据是什么。感谢您的帮助。它起作用了。这实际上是一个错误。我已经修改了我的代码。但现在若ajax响应为真,那个么就不会出现if循环,也不会检查其他条件。我该怎么办?请在这方面提供帮助。在您的模型中检查$users
中的值,我认为您运行的查询是错误的。从该查询中,我将返回true/false,并在ajax检查响应中返回。如果为false,则发出警报,否则我必须说退出if(mno.match(phoneno))
循环并检查其else。这是不可能的。如果ajax返回true,我已经编写了'if(response='false'){alert('Mobile number已经存在!');$(“#custmobilenumber”).focus();}否则if(response='true'){return true;//这样它将从if(mno.match(phoneno))返回,但不会出来}`请echo$users
并查看它是否有任何值,如果没有,则说明您的查询是错误的,如果是,则通过console.log(data)
检查success中的值,并查看控制器返回的数据是什么。