从 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而不刷新页面