ورود

View Full Version : مبتدی: کمک برای ajax



.:Mahdi:.
پنج شنبه 18 مهر 1392, 21:55 عصر
سلام
من تازه میخوام ایجکس رو شروع کنم.
برای شروع این کد رو نوشتم ولی کار نمیکنه.کسی میدونه مشکلم چیه؟


<!doctype html>
<html>
<head>
<title>AJAX</title>
<script type="text/javascript">
function createXMLHttp(){
if(typeof XMLHttpRequest !="undefined"){
return new XMLHttpRequest();
}else if(window.ActiveXObject){
var iEVersion=["MSXML2.XMLHttp.5.0","MSXML2.XMLHttp.4.0","MSXML2.XMLHttp.3.0","<MSXML2.XMLHttp","Microsoft.XMLHttp"];
for(var i=0;i<iEVersion.length;i++){
try{
var xmlHttp=new ActiveXObject(iEVersion[i]);
return xmlHttp;
}catch(oError){
}
}
}
throw new Error("XMLHttp ovject could not be created.")
}
function getData(dataSource,divID){
xmlHttp=createXMLHttp();
xmlHttp.open("GET",dataSource);
xmlHttp.Onreadystatechange=function(){
if(xmlHttp.readyState==4 && xmlHttp.status==200){
obj.innerHTML=xmlHttp.responseText;
}
}
xmlHttp.send(null);
}
</script>
</head>
<body>
<input type="button" value="Display Message" onclick="getData('Data.txt','targetDiv')">
<div id="targetDiv">
<p>Display Message Here.</p>
</div>
</body>
</html>



در ضمن کنار این فایل html یه فایل Data.txt هم ساختم که حاوی یه جمله هست

jalil_gh
جمعه 19 مهر 1392, 10:23 صبح
داخل تابع getData :
اول اینکه onreadystatechange رو باید تماما با حروف کوچک بنویسی (‌تو جاوااسکریپت همه رویدادها با حروف کوچک نوشته میشن).
دوم اینکه شما obj رو تعریف نکردی. باید یه جایی داخل این تابع اینجوری obj رو تعریف کنی:
var obj = document.getElementById(divID);
در ضمن همیشه برای تعریف متغیر قبلش از var استفاده کن. داخل تابع getData خط اول رو اینجوری بنویس:
var xmlHttp=createXMLHttp();

.:Mahdi:.
جمعه 19 مهر 1392, 17:28 عصر
ممنون.
کد رو همون طور که گفتید بازنویسی کردم و کار کرد.
راست میگید حواسم نبود obj رو تعریف کنم.:اشتباه:

<!doctype html>
<html>
<head>
<title>AJAX</title>
<script type="text/javascript">
function createXMLHttp(){
if(typeof XMLHttpRequest !="undefined"){
return new XMLHttpRequest();
}else if(window.ActiveXObject){
var iEVersion=["MSXML2.XMLHttp.5.0","MSXML2.XMLHttp.4.0","MSXML2.XMLHttp.3.0","<MSXML2.XMLHttp","Microsoft.XMLHttp"];
for(var i=0;i<iEVersion.length;i++){
try{
var xmlHttp=new ActiveXObject(iEVersion[i]);
return xmlHttp;
}catch(oError){
}
}
}
throw new Error("XMLHttp ovject could be created.")
}
function getData(dataSource,divID){
var obj = document.getElementById("target");
var xmlHttp=createXMLHttp();
xmlHttp.open("GET",dataSource);
xmlHttp.onreadystatechange=function(){
if(xmlHttp.readyState==4 && xmlHttp.status==200){
obj.innerHTML=xmlHttp.responseText;
}
}
xmlHttp.send(null);
}
</script>
</head>
<body>
<input type="button" value="Display Message" onclick="getData('Data.txt','targetDiv')">
<p id="target">Display Message Here.</p>
</body>
</html>

Javidhb
جمعه 19 مهر 1392, 18:33 عصر
xmlHttp.open("GET",dataSource, true);


اون true یعنی بصورت asynchronous (ایجکس) با سرور ارتباط برقرار بشه..


باید بگید چه اروری میده... یا با چه مرورگری مشکل دارید؟

برای دیدن ارور ctrl+shift+i رو توی فایرفاکس(فکر کنم برای کروم هم همین باشه) بزنید و بعد برید به تب network.. (یا بهتر از اون افزونه firebug رو نصب کنید)

.:Mahdi:.
جمعه 19 مهر 1392, 20:21 عصر
xmlHttp.open("GET",dataSource, true);


اون true یعنی بصورت asynchronous (ایجکس) با سرور ارتباط برقرار بشه..


باید بگید چه اروری میده... یا با چه مرورگری مشکل دارید؟

برای دیدن ارور ctrl+shift+i رو توی فایرفاکس(فکر کنم برای کروم هم همین باشه) بزنید و بعد برید به تب network.. (یا بهتر از اون افزونه firebug رو نصب کنید)

ممنون همونطور که پست قبلی گفتم کد کار کرد.
اون true هم فکر کنم اگه ننویسم خودش همون true حساب میکنه