Javascript ajax数据在MVC的控制器函数中变为空

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

我是ajax和MVC框架的初学者。我必须找到是否存在使用ajax的移动设备。我尝试了以下代码

查看

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中的值,并查看
控制器返回的数据是什么。