【问题标题】:sent international phone from jquery to codeigniter controller is sent null?从 jquery 发送到 codeigniter 控制器的国际电话发送为空?
【发布时间】: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'}
  • 我试过你的建议,但同样的问题..

标签: javascript php jquery codeigniter


【解决方案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】:

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

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

    在您的 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(),
    //.......
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-06-09
      • 2013-07-28
      • 2011-07-28
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多