PDA

View Full Version : سوال: اجرا نشدن آجاکس روی اینترنت اکسپلورر



farnaz.saeedi
پنج شنبه 10 آذر 1390, 19:39 عصر
با سلام
من تو یه قسمت از برنامه ام میخوام وقتی اسم یه استان از تو فرم انتخاب شد تو فرم پایینی شهرستان های
اون استان و با آجاکس نشون بدم
مشکل اینجاس که این کد رو همه مرورگرها بخوبی اجرا میشه جز ie
این کدهای html:


<tr>
<td width="100">استان:</td>
<td><select name="ostan" id="ostan" onchange="GetCity()">
<option></option>
<option value="azarbayjan sharghi" style="font-family:'B Mitra'; font-size:15px">آذربایجان شرقی</option>
<option value="azarbayjan gharbi" style="font-family:'B Mitra'; font-size:15px">آذربایجان غربی</option>
<option value="ardebil" style="font-family:'B Mitra'; font-size:15px">اردبیل</option>
.
.
.
</td>
</tr>
<tr>
<td width="100">شهرستان:</td>
<td><select name="city" id="city">
<option></option>
</select></td>
</tr>
این تابع آجاکس:

var xmlCity;
function createXMLHttpCity()
{
if (window.ActiveXObject)
{
xmlCity = new ActiveXObject("Microsoft.XMLHTTP");
}
else if (window.XMLHttpRequest)
{
xmlCity = new XMLHttpRequest();
}
if (xmlCity==null)
{
alert ("Browser does not support HTTP Request");
return;
}
}
function GetCity()
{
createXMLHttpCity();
var name=document.getElementById('ostan').value;
var a='getcity';
xmlCity.open("get", "function.php?run="+a+"&ostan="+name, true);
xmlCity.onreadystatechange = handleCity;
xmlCity.send(null);
}
function handleCity()
{
if (xmlCity.readyState == 4)
{
if (xmlCity.status == 200)
{
displayCity(xmlCity.responseText);
}
}
}
function displayCity(sText)
{
var divCity =document.getElementById("city");
divCity.innerHTML = sText;
}


اینم کدهای php:


header("Content-Type: text/plain");
$run=$_GET['run'];
if($run=='getcity')
city();
function city()
{
require_once("config.php");
$ostan=$_GET['ostan'];
$sql="select ostan from city where ostan='$ostan'";
$query=mysql_query($sql);
$num=mysql_num_rows($query);
$city[]=array();
for ($i=0; $i<$num; $i++)
{
$sql="select city from city where ostan='$ostan'";
$query=mysql_query($sql);
$city[$i]=mysql_result($query,$i,0);
}
for ($i=0; $i<$num; $i++)
{
?>
<option value="<?php echo $city[$i];?>" style="font-family:'B Mitra'; font-size:15px"><?php echo $city[$i];?></option>
<?php
}
}

برای اینکه رو اینترنت اکسپلورر هم اجرا بشه چکار باید بکنم؟
با تشکر

Sadbar7
پنج شنبه 10 آذر 1390, 22:04 عصر
توی فایل آجاکست این کد فانکشن createXMLHttpCity() رو با کد زیر عوض کن ببین درست میشه یا نه.

function createXMLHttpCity()
{
if (window.ActiveXObject)
{
xmlCity = new ActiveXObject("Microsoft.XMLHTTP");
}
else if (window.ActiveXObject)
{
xmlCity = new ActiveXObject("Msxml2.XMLHTTP");
}
else if (window.XMLHttpRequest)
{
xmlCity = new XMLHttpRequest();
}
if (xmlCity==null)
{
alert ("Browser does not support HTTP Request");
return;
}
}

farnaz.saeedi
جمعه 11 آذر 1390, 11:21 صبح
توی فایل آجاکست این کد فانکشن createXMLHttpCity() رو با کد زیر عوض کن ببین درست میشه یا نه.

function createXMLHttpCity()
{
if (window.ActiveXObject)
{
xmlCity = new ActiveXObject("Microsoft.XMLHTTP");
}
else if (window.ActiveXObject)
{
xmlCity = new ActiveXObject("Msxml2.XMLHTTP");
}
else if (window.XMLHttpRequest)
{
xmlCity = new XMLHttpRequest();
}
if (xmlCity==null)
{
alert ("Browser does not support HTTP Request");
return;
}
}
فک نمیکنم مشکل از اینها باشه
من اگه به جای این قسمت:


function displayCity(sText){ var divCity =document.getElementById("city"); divCity.innerHTML = sText;}
این قسمت و بنویسم اجرا میشه:


function displayCity(sText)
{
alert(sText);
}

فقط مشکل اینه که تو ie اسم شهرستان هارو تو تگ select قرار نمیده.وگرنه هر جای دیگه چاپشون میکنه

exlord
جمعه 11 آذر 1390, 18:10 عصر
اینترنت اکسپلورر با innerHTML مشکل داره یا از appendChild استفاده کن ویا برای بهترین نتیجه از jquery یا هر library دیگه ...

farnaz.saeedi
جمعه 11 آذر 1390, 23:19 عصر
این Appendchild چی هست؟اگه بخوام این کدو باهاش بنویسم چه قسمتهایی و باید تغییر بدم.میشه کدشو بنویسید.
ممنون میشم

saina2006
شنبه 12 آذر 1390, 03:50 صبح
بهترین راه استفاده از JQuery هست. برای استفاده از Ajax توسط JQuery این دوتا مقاله واقعا عالیه

http://www.devirtuoso.com/2009/07/beginners-guide-to-using-ajax-with-jquery/
http://www.ibm.com/developerworks/opensource/library/os-php-jquery-ajax/

برای تغییر مقدار innerHTML هم میتونی از دستور زیر استفاده کنی



$('#element_id').html('HTML_Value');

farnaz.saeedi
شنبه 12 آذر 1390, 08:53 صبح
بهترین راه استفاده از JQuery هست. برای استفاده از Ajax توسط JQuery این دوتا مقاله واقعا عالیه

http://www.devirtuoso.com/2009/07/beginners-guide-to-using-ajax-with-jquery/
http://www.ibm.com/developerworks/opensource/library/os-php-jquery-ajax/

برای تغییر مقدار innerHTML هم میتونی از دستور زیر استفاده کنی



$('#element_id').html('HTML_Value');

الان به جای html_value چه مقداری باید قرار بدم؟

saina2006
شنبه 12 آذر 1390, 09:00 صبح
چیزی که میخوایید نوشته بشه، مثلا برای شما تگهای آپشن هست

farnaz.saeedi
شنبه 12 آذر 1390, 09:22 صبح
چیزی که میخوایید نوشته بشه، مثلا برای شما تگهای آپشن هست
ببینید من هر کدوم از اون کدهام تو یه فایل جداست.کدهای html تو فایل index کدهای ajax تو فایل ajax.js و کدهای php تو فایل function.php
من الان این کدو تو فایل ajax.js اضافه کردم


$(document).ready(function()
{
$('#city').html("<option value='<?php echo $city[$i];?>' style='font-family:'B Mitra'; font-size:15px'><?php echo $city[$i];?></option>");
});

اما چون متغییرهای php و نمیشناسه کارخواصی نمیکنه.
من برای کار با آجاکس از جاوااسکریپت اسفاده میکنم نه jquery

saina2006
شنبه 12 آذر 1390, 09:33 صبح
همون کدی رو که برای بقیه توی innerHTML نوشته بودی میتونی بزاری اینجا
بهتری یه string توی php بسازی و بعد اونو بنویسی اینجا

من خودم همیشه از JQuery استفاده میکنم چون دیگه لازم نیست نگران اجرا شدن کدها توی مرورگرهای مختلف باشم

saina2006
شنبه 12 آذر 1390, 09:47 صبح
اینم یه نمونه