从 jquery 发送到 codeigniter 控制器的国际电话发送为空?

Posted

技术标签:

【中文标题】从 jquery 发送到 codeigniter 控制器的国际电话发送为空?【英文标题】:sent international phone from jquery to codeigniter controller is sent null? 【发布时间】:2019-07-22 06:12:00 【问题描述】:

我的 html 代码

<form  class="form" id="d_personal_form" action="<?php echo base_url('registerdoctor');?>"  method="post">
    <input type="tel" id="d_phone">
    <button class="btn" type="submit" id="d_send_personal_data">send</button>
</form>

javascript 代码

 <script>
var input = document.querySelector("#d_phone");
var output = document.querySelector("#d_phone_error_msg");
var iti=intlTelInput(input, 
    allowDropdown: true,
    initialCountry: "auto",
    nationalMode: true,
    preferredCountries: ['ye'],
    utilsScript: "assets/js/utils.js?"
    );
$(document).ready(function()
    $("#d_send_personal_data").click(function()
        $.ajax(
            type:'POST',
            url:"<?php echo base_url();?>doctor_c/register_doctor",
            data:d_phone:iti.getNumber(),
            success: function(data)
            
                alert(iti.getNumber());           
                alert('true data ...');
            ,
            error: function()
                alert('something went wrong...');
             
        );
    );
);
</script>

我的 codeigniter 控制器代码

$phone= $this->security->xss_clean($this->input->post('d_phone'));echo $phone;

控制器不显示任何值,非常感谢您的帮助

【问题讨论】:

我希望这行有错误data:d_phone:iti.getNumber() javascript 代码运行正确并通过警报功能显示选择的电话号码,将值发送到控制器时的问题没有找到任何值 你可以试试静态data:d_phone:'123' 我试过你的建议,但同样的问题.. 【参考方案1】:

我通过将视图添加为 HTML 代码来找到解决方案

<input type="hidden" id="d_mobile" name="d_mobile" value="">

并将 JavaScript 编辑为

<script>
    var input = document.querySelector("#d_phone");
    var output = document.querySelector("#d_phone_error_msg");
    var iti=intlTelInput(input, 
        allowDropdown: true,
        initialCountry: "auto",
        nationalMode: true,
        preferredCountries: ['ye'],
        utilsScript: "assets/js/utils.js?"
        );
    $(document).ready(function()
        $("#d_send_personal_data").click(function()
            var mobile =iti.getNumber();
            $('#d_mobile').val(mobile);                
        );
    );
    </script>

在控制器中,我收到了隐藏输入的值

$phone= $this->security->xss_clean($this->input->post('d_mobile'));echo $phone;

正确发送值

【讨论】:

【参考方案2】:

通常我会通过以下方式获得国家代码和拨号代码:

    为拨号代码和国家代码添加隐藏输入。 将“countrychange”事件侦听器添加到“tel”类型的输入中。 只需读取输入元素的值。

在您的 html 文件中:

<input name="d_mobile" id="d_mobile" type="tel">
<input type="hidden" id="d_dial_code" name="d_dial_code" readonly>
<input type="hidden" id="d_country_code" name="d_dial_code" readonly>

在你的 js 文件中:

var d_mobile = document.querySelector("#d_mobile");
var d_dial_code = document.querySelector("#d_dial_code");
var d_country_code = document.querySelector("#d_country_code");

var d_country_code_picker = intlTelInput(d_mobile, 
    initialCountry: "auto", 
    geoIpLookup: function(success)
        $.get("https://ipapi.co/json/", undefined, "json")
        .done(function(response)
            success(response.country);
        );
    ,
    utilsScript: "assets/js/utils.js"
);

d_mobile.addEventListener('countrychange', function(e) 
    d_dial_code.value = d_country_code_picker.getSelectedCountryData().dialCode;
    d_country_code.value = d_country_code_picker.getSelectedCountryData().iso2;
);

//Get the value of dial code, country code, and mobile number:
//.......
    d_dial_code: $("#d_dial_code").val(),
    d_country_code: $("#d_country_code").val(),
    d_mobile: $("#d_mobile").val(),
//.......

【讨论】:

以上是关于从 jquery 发送到 codeigniter 控制器的国际电话发送为空?的主要内容,如果未能解决你的问题,请参考以下文章

在Codeigniter中将javascript变量从视图发送到控制器[重复]

使用jQuery AJAX请求CodeIgniter从Controller显示数据库中的数据到View而不刷新页面

如何在codeigniter中将数据从视图发送到控制器

单击 jquery 按钮 + 发送没有表单的数据 - 书签

Jquery easyui datagrid从codeigniter控制器加载数据

将变量从视图传递到视图 codeigniter