سوال در مورد توابع open و send در ajax

ana9940

New Member
اين برنامه ي livesearch هست که به محض پيدا کردن اسامي از ديتابيس اونا را نشان ميده. البته غير از دو فايل زير يک فايل livesearch.php هم هست.
سوال من اينه که چرا open va send بعد از بررسي state قرار گرفته است.
منظورم تو اين سه خط هست:
کد:
xmlhttp.onreadystatechange=stateChanged ;
xmlhttp.open("GET",url,true);
xmlhttp.send(null);

سوال بعدي هم درباره کدهاييه که در هدر فايل main.html بين تگهاي style نوشته شده چه معني ميدهد؟؟

فايل اول : main.html
HTML:
<head>
<script type="text/javascript" src="livesearch.js"></script>
<style type="text/css">
#livesearch
  {
  margin:0px;
  width:194px;
  }
#txt1
  {
  margin:0px;
  }
</style>
</head>
<body>

<form>
<input type="text" id="txt1" size="30" onkeyup ="showResult(this.value)" />

<div id="livesearch"  ></div>
</form>

</body>

فايل دوم : livesearch.js
کد:
var xmlhttp;

function showResult(str)
{
if (str.length==0)
  {
  document.getElementById("livesearch").innerHTML="";
  document.getElementById("livesearch").style.border="0px";
  return;
  }
xmlhttp=GetXmlHttpObject()
if (xmlhttp==null)
  {
  alert ("Your browser does not support XML HTTP Request");
  return;
  }
var url="livesearch.php";
url=url+"?q="+str;
var selectsub=document.getElementById("selectsub");

xmlhttp.onreadystatechange=stateChanged ;
xmlhttp.open("GET",url,true);
xmlhttp.send(null);
}

function stateChanged()
{
if (xmlhttp.readyState==4)
  {
  document.getElementById("livesearch").innerHTML=xmlhttp.responseText;
  document.getElementById("livesearch").style.border="1px solid #A5ACB2";
  }
}

function GetXmlHttpObject()
{
if (window.XMLHttpRequest)
  {
  return new XMLHttpRequest();
  }
if (window.ActiveXObject)
  {
  return new ActiveXObject("Microsoft.XMLHTTP");
  }
return null;
}
 

k2-4u

Well-Known Member
ajax در 4 مرحله کارشو انجام میده .
0 . هیچی نشده
1 . وقتی که دستور باز شده (متد open)
2. وقتی که دستور ارسال شده ولی جواب نیومده ( متد send)
3. در حال دریافت اطلاعات است و هنوز همه اطلاعات نیومده (در این مواقق آیکون loading میگذارن )
4. وقتی که عملات دریافت تموم شده

متد onreadystatechange یک تابع رو ورودی میگیره و هر یک از 5 مرحله که برسه یک بار تابع رو اجرا می کنه
یعنی در جمع 5 بار

کد:
xmlhttp.onreadystatechange=stateChanged ;
در این کد شما تابع stateChanged رو به عنوان ورودی این متد داده اید .
در همون حرکت اول تابع stateChanged یک بار اجرا میشه (یعنی مرحله 0 )

وقتی برنامه به دستور
کد:
xmlhttp.open("GET",url,true);
میرسه تابع stateChanged یک بار دیگه هم اجرا میشه (مرحله 1 )

و در ادامه با اجرای کد
کد:
xmlhttp.send(null);
تابع stateChanged برای بار سوم اجرا میشه (مرحله 2)

وقتی که اطاعات شروع به دریافت کرد . مرحله 3
و پایان دریافت مرحله 4 .

سوال بعدي هم درباره کدهاييه که در هدر فايل main.html بين تگهاي style نوشته شده چه معني ميدهد؟؟
این ها کد های CSS هستند.
CSS یک زبان . نشانه گذاری مثل HTML است
که به HTML هم متصل است .
و برای فرمت کردن HTML استفاده می شود
مثلا رنگ فوت آبی . پشت صفحه مشکی و ....
 

جدیدترین ارسال ها

بالا