I like to use AJAX to get State using Zipcode.
Here is my controller
class Test extends Controller
{
function Test()
{
parent::Controller();
}
function StateByZip($ZipCode="40011")
{
$ch = curl_init();
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_URL ,"http://www.shopno-dinga.com/WebService/zipinfo/info_by_zip.php?zip=".$ZipCode);
$ZipDetail=curl_exec($ch); // Output: State=KY&City=CAMPBELLSBURG&County=HENRY
curl_close($ch);
echo $ZipDetail;
}
function ZipCity()
{
$this->load->view("view_test_zip");
}
}
Here is my view file view_test_zip.php. In addition, this file also have AJAX XHLHTTP Request object code.
function CreateNewHttpObject() //Create an Instance of HTTP request.
{
var xmlHttp=null;
try{ // Firefox, Opera 8.0+, Safari
xmlHttp=new XMLHttpRequest();
}
catch (e){ // Internet Explorer
try{
xmlHttp=new ActiveXObject("Msxml2.XMLHTTP");
}
catch (e){
xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
}
}
return xmlHttp;
}
function ZipState(ZipCode,StateTxt)
{
var ObjHttp= new CreateNewHttpObject();
if(ObjHttp)
{
var dataSource = "<?=base_url?>test/StateByZip("+ZipCode+")";
ObjHttp.open("GET", dataSource);
ObjHttp.onreadystatechange = function()
{
if (ObjHttp.readyState == 4 && ObjHttp.status == 200)
{
var returnVal=ObjHttp.responseText;
document.getElementById(StateTxt).value=returnVal;
}
ObjHttp.send(null);
}
}
}
<input name="zip" type="text" id="zip" onblur="return ZipState(this.value,'state')" value="40011" />
<input name="state" type="text" id="state" value="state" />
My code first create HttpObject which works fine in many other projects (not using CI). After that it calls my test controller’s StateByZip($ZipCode) funciton. Upto this point it works fine but after that i feel, my code can’t call and execute StateByZip($ZipCode) funciton and as such can’t display state value in state box.
Please help me resolve it. Or at least send me an example “how to use CI with AJAX”.
Thanks in Advance.
