reza1988
چهارشنبه 02 بهمن 1387, 16:36 عصر
با سلام
دوستان یک سری کد را من از یک مقاله کپی کردم و هر کاری که در آن مقاله گفته شده بود انجام دادم ولی اجرا نشد .
من می خوام یک فرم با دو لیست باکس یا همون لیست های پایین افتادنی درست کنم ، که اگر یک option یا گزینه را از منوی اول انتخاب کردیم ، گزینه های منوی دوم بر اساس منوی اول ظاهر بشوند . مثال آن مقاله هم این طور بود که دو تا منو داشته باشیم که اگر از منوی اول نام یک کشور انتخاب شد در منوی یا لیست باکس دوم اسم شهرهای مربوط به آن کشور ظاهر شود .
در این سایت سه نوع کد بود که در زیر آن ها را گذاشته ام .
کد زیر برای فعال سازی ارتباط کلاینت به سرور است .در این کد دو تابع برای فعال سازی آژاکس آمده باید آن را با نام و پسوند ajax.js ذخیره کرد .
function DoCallback(data) {
// branch for native XMLHttpRequest object
if (window.XMLHttpRequest) {
req=new XMLHttpRequest();
req.onreadystatechange=processReqChange;
req.open('POST',url,true);
req.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
req.send(data);
//branch for IE/windows ActiveX version
}
else if (window.ActiveXObject) {
req = new ActiveXObject ('microsoft.XMLHTTP');
if (req) {
req.onreadystatechange=processReqChange;
req.open('POST',url,true);
req.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
req.send(data);
}
}
}
function processReqChange() {
// only if req show 'loaded'
if (req.readyState == 4) {
//only if 'OK'
if (req.status == 200) {
eval (what);
}
else {
alert ('There was a problem retrieving the XML data: ' + req.responseText);
}
}
}
حال کد php زیر را که قرار است آژاکس با آن ارتباط برقرار کند ، را که در زیر آمده با نام و پسوندcountry.php تایپ و ذخیره می کنیم .
<?php
$states = array();
$states ["iran"] = array("tehran","esfehan","mashhad");
$states ["USA"] = array ("california","new yourk","ohio");
if (isset ($_POST["country"]) && isset ($states[$_POST["country"]]))
{
foreach($states[$_POST["country"]] as $state) {
printf("%s",$state);
}
}
?>
همچنین فایلی که لیست ها ما در ان قرار دارد نیز در زیر آمده آن را با نام و پسوند country.html باید ذخیره کنیم .
<html>
<head>
<script>
var url = "country.php";
var what = "SetStates(req.responseText)";
function GetStates(Country) {
DoCallback("country=" + Country);
}
function SetStates(States) {
var stateBox = document.getElementById("state");
stateBox.options.length=0;
if (States != "") {
var arrStates = States.split(",");
for (i=0 ; i<arrStates.length ;i++) {
if(arrStates[i] !="") {
stateBox.options[stateBox.options.length] =new option(arrStates[i] , arrStates[i]);
}
}
}
}
</script>
<script src="ajax.js" type="text/javascript"></script>
</head>
<body>
<pre>Country:
<select onchange="GetStates(this.options[this.selectedIndex].text)" id="country">
<option value=""></option>
<option>iran</option>
<option>USA</option>
</select><br>State: <select id="state"></select>
</pre>
</body>
</html>
حال در صفحه HTML ایجاد شده باید دو منو داشته باشیم که اگر در منوی اول نام یک کشور انتخاب شود در منوی دو باید نام آن شهر ها نمایش داده شود .
چون که این سوال علاوه بر آژاکس به PHP هم مر بوط بود سوال را در این قسمت پرسیدم ، امیدوارم که مکان طرح سوال را اشتباه نکرده باشم . همچنین امیدوارم عنوانم نیز مناسب باشد ، اگه عنوان غلط بود شما ببخشید.
دوستان، من به کدی مانند آن چه گفته شد ، نیاز شدید دارم . هر چی هم سرچ کردم چیزی که که این نیاز را بر طرف کنه پیدا نکردم . فقط در یک مقاله این کد ها را پیدا کردم که آن نیز کار نکرد . لطفا در بر طرف کردن ایراد این کد کمکم کنید ، یا کد دیگر که همین کار را بکنه ارائه کنید .:ناراحت:
با تشکر
دوستان یک سری کد را من از یک مقاله کپی کردم و هر کاری که در آن مقاله گفته شده بود انجام دادم ولی اجرا نشد .
من می خوام یک فرم با دو لیست باکس یا همون لیست های پایین افتادنی درست کنم ، که اگر یک option یا گزینه را از منوی اول انتخاب کردیم ، گزینه های منوی دوم بر اساس منوی اول ظاهر بشوند . مثال آن مقاله هم این طور بود که دو تا منو داشته باشیم که اگر از منوی اول نام یک کشور انتخاب شد در منوی یا لیست باکس دوم اسم شهرهای مربوط به آن کشور ظاهر شود .
در این سایت سه نوع کد بود که در زیر آن ها را گذاشته ام .
کد زیر برای فعال سازی ارتباط کلاینت به سرور است .در این کد دو تابع برای فعال سازی آژاکس آمده باید آن را با نام و پسوند ajax.js ذخیره کرد .
function DoCallback(data) {
// branch for native XMLHttpRequest object
if (window.XMLHttpRequest) {
req=new XMLHttpRequest();
req.onreadystatechange=processReqChange;
req.open('POST',url,true);
req.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
req.send(data);
//branch for IE/windows ActiveX version
}
else if (window.ActiveXObject) {
req = new ActiveXObject ('microsoft.XMLHTTP');
if (req) {
req.onreadystatechange=processReqChange;
req.open('POST',url,true);
req.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
req.send(data);
}
}
}
function processReqChange() {
// only if req show 'loaded'
if (req.readyState == 4) {
//only if 'OK'
if (req.status == 200) {
eval (what);
}
else {
alert ('There was a problem retrieving the XML data: ' + req.responseText);
}
}
}
حال کد php زیر را که قرار است آژاکس با آن ارتباط برقرار کند ، را که در زیر آمده با نام و پسوندcountry.php تایپ و ذخیره می کنیم .
<?php
$states = array();
$states ["iran"] = array("tehran","esfehan","mashhad");
$states ["USA"] = array ("california","new yourk","ohio");
if (isset ($_POST["country"]) && isset ($states[$_POST["country"]]))
{
foreach($states[$_POST["country"]] as $state) {
printf("%s",$state);
}
}
?>
همچنین فایلی که لیست ها ما در ان قرار دارد نیز در زیر آمده آن را با نام و پسوند country.html باید ذخیره کنیم .
<html>
<head>
<script>
var url = "country.php";
var what = "SetStates(req.responseText)";
function GetStates(Country) {
DoCallback("country=" + Country);
}
function SetStates(States) {
var stateBox = document.getElementById("state");
stateBox.options.length=0;
if (States != "") {
var arrStates = States.split(",");
for (i=0 ; i<arrStates.length ;i++) {
if(arrStates[i] !="") {
stateBox.options[stateBox.options.length] =new option(arrStates[i] , arrStates[i]);
}
}
}
}
</script>
<script src="ajax.js" type="text/javascript"></script>
</head>
<body>
<pre>Country:
<select onchange="GetStates(this.options[this.selectedIndex].text)" id="country">
<option value=""></option>
<option>iran</option>
<option>USA</option>
</select><br>State: <select id="state"></select>
</pre>
</body>
</html>
حال در صفحه HTML ایجاد شده باید دو منو داشته باشیم که اگر در منوی اول نام یک کشور انتخاب شود در منوی دو باید نام آن شهر ها نمایش داده شود .
چون که این سوال علاوه بر آژاکس به PHP هم مر بوط بود سوال را در این قسمت پرسیدم ، امیدوارم که مکان طرح سوال را اشتباه نکرده باشم . همچنین امیدوارم عنوانم نیز مناسب باشد ، اگه عنوان غلط بود شما ببخشید.
دوستان، من به کدی مانند آن چه گفته شد ، نیاز شدید دارم . هر چی هم سرچ کردم چیزی که که این نیاز را بر طرف کنه پیدا نکردم . فقط در یک مقاله این کد ها را پیدا کردم که آن نیز کار نکرد . لطفا در بر طرف کردن ایراد این کد کمکم کنید ، یا کد دیگر که همین کار را بکنه ارائه کنید .:ناراحت:
با تشکر