akram_raeespour
جمعه 15 شهریور 1387, 12:36 عصر
سلام
من در جاوا اسکریپت و Ajax تازه کارم. و می خواهم از آبجکت xmlHttprequest در یک حلقه استفاده کنم. کد اولیه من در استفاده یک بار از این شی به خوبی کار می کرد اما وقتی در حلقه قرار می گرفت فقط دفعه اول اجرا می شد.
در اینترنت زیاد سرچ کردم و راه حل هایی مثل استفاده از timeinterval() پیشنهاد شده بود. اما نمی خواهم از این روش استفاده کنم چون که معلوم نیست که هر request که به سرور می فرستم چقدر زمان می برد که انجام شود.
من یک کد پیدا کردم که طریق استفاده از xmlhttprequest را در حلقه را با شیوه ای متفاوت از کد من داشت. اما چون خیلی جاوا اسکریپت بلد نیستم، نتونستم از این کد استفاده کنم. می خواستم که شما در استفاده از این کد به من کمک کنید.
من می خواهم در یک حلقه هر بار متغیری را با استفاده از xmlhttprequest به سرور ارسال کنم و مثلا اسکریپت PHP من آن را چاپ کند. اگر این کار انجام شود مشکل من حل می شود.
لینک کد این است.
http://drakware.com/?e=3
و این طریقه استفاده من از این کد است. فرض کنید insertuser.php فقط متغیر K را چاپ می کند.
<html>
<head>
<META HTTP-EQUIV="Content-Type" content="text/html; charset=utf-16">
</head>
<script src="sha-1factory.js"></script>
<Script Language="JavaScript">
var fileLines,Stringobject;
var url;
var fs, a, ForAppending,fileContent;
var k;
var xmlreqs = new Array();
function CXMLReq(freed) {
this.freed = freed;
this.xmlhttp = false;
if (window.XMLHttpRequest) { this.xmlhttp = new XMLHttpRequest(); }
else if (window.ActiveXObject) {
this.xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
}
}
//////////////////
function xmlhttpChange(pos) {
if (typeof(xmlreqs[pos]) != 'undefined' && xmlreqs[pos].freed == 0 && xmlreqs[pos].xmlhttp.readyState == 4) {
if (xmlreqs[pos].xmlhttp.status == 200 || xmlreqs[pos].xmlhttp.status == 304) {
handle_response(xmlreqs[pos].xmlhttp.responseXML);
} else {
handle_error();
}
xmlreqs[pos].freed = 1;
}
}
//////////////
function xmlreqGET(url) {
var pos = -1;
for (var i=0; i<xmlreqs.length; i++) {
if (xmlreqs[i].freed == 1) { pos = i; break; }
}
alert(url);
if (pos == -1) { pos = xmlreqs.length; xmlreqs[pos] = new CXMLReq(1); }
if (xmlreqs[pos].xmlhttp) {
xmlreqs[pos].freed = 0;
xmlreqs[pos].xmlhttp.open("GET",url,true);
xmlreqs[pos].xmlhttp.onreadystatechange = function() {
if (typeof(xmlhttpChange) != 'undefined') { xmlhttpChange(pos); }
}
if (window.XMLHttpRequest) {
xmlreqs[pos].xmlhttp.send(null);
} else if (window.ActiveXObject) {
xmlreqs[pos].xmlhttp.send();
}
}
}
//////////
function handle_response(t){
document.getElementById("SeeTextAreaName").innerHTML =t
}
////////////
function Upload() {
/
url="insertuser.php";
k = 5;
while (k<9){
url=url + "?usern=" + k;
url=url + "&sid=" + Math.random();
xmlreqGET(url)
k++;
}
}
</Script>
<body>
<p><Input Type="Button" Value="Upload" OnClick="Upload()"></p>
<p><div id="SeeTextAreaName">
Initial value of a div.</div></p>
</body>
</html>
من در جاوا اسکریپت و Ajax تازه کارم. و می خواهم از آبجکت xmlHttprequest در یک حلقه استفاده کنم. کد اولیه من در استفاده یک بار از این شی به خوبی کار می کرد اما وقتی در حلقه قرار می گرفت فقط دفعه اول اجرا می شد.
در اینترنت زیاد سرچ کردم و راه حل هایی مثل استفاده از timeinterval() پیشنهاد شده بود. اما نمی خواهم از این روش استفاده کنم چون که معلوم نیست که هر request که به سرور می فرستم چقدر زمان می برد که انجام شود.
من یک کد پیدا کردم که طریق استفاده از xmlhttprequest را در حلقه را با شیوه ای متفاوت از کد من داشت. اما چون خیلی جاوا اسکریپت بلد نیستم، نتونستم از این کد استفاده کنم. می خواستم که شما در استفاده از این کد به من کمک کنید.
من می خواهم در یک حلقه هر بار متغیری را با استفاده از xmlhttprequest به سرور ارسال کنم و مثلا اسکریپت PHP من آن را چاپ کند. اگر این کار انجام شود مشکل من حل می شود.
لینک کد این است.
http://drakware.com/?e=3
و این طریقه استفاده من از این کد است. فرض کنید insertuser.php فقط متغیر K را چاپ می کند.
<html>
<head>
<META HTTP-EQUIV="Content-Type" content="text/html; charset=utf-16">
</head>
<script src="sha-1factory.js"></script>
<Script Language="JavaScript">
var fileLines,Stringobject;
var url;
var fs, a, ForAppending,fileContent;
var k;
var xmlreqs = new Array();
function CXMLReq(freed) {
this.freed = freed;
this.xmlhttp = false;
if (window.XMLHttpRequest) { this.xmlhttp = new XMLHttpRequest(); }
else if (window.ActiveXObject) {
this.xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
}
}
//////////////////
function xmlhttpChange(pos) {
if (typeof(xmlreqs[pos]) != 'undefined' && xmlreqs[pos].freed == 0 && xmlreqs[pos].xmlhttp.readyState == 4) {
if (xmlreqs[pos].xmlhttp.status == 200 || xmlreqs[pos].xmlhttp.status == 304) {
handle_response(xmlreqs[pos].xmlhttp.responseXML);
} else {
handle_error();
}
xmlreqs[pos].freed = 1;
}
}
//////////////
function xmlreqGET(url) {
var pos = -1;
for (var i=0; i<xmlreqs.length; i++) {
if (xmlreqs[i].freed == 1) { pos = i; break; }
}
alert(url);
if (pos == -1) { pos = xmlreqs.length; xmlreqs[pos] = new CXMLReq(1); }
if (xmlreqs[pos].xmlhttp) {
xmlreqs[pos].freed = 0;
xmlreqs[pos].xmlhttp.open("GET",url,true);
xmlreqs[pos].xmlhttp.onreadystatechange = function() {
if (typeof(xmlhttpChange) != 'undefined') { xmlhttpChange(pos); }
}
if (window.XMLHttpRequest) {
xmlreqs[pos].xmlhttp.send(null);
} else if (window.ActiveXObject) {
xmlreqs[pos].xmlhttp.send();
}
}
}
//////////
function handle_response(t){
document.getElementById("SeeTextAreaName").innerHTML =t
}
////////////
function Upload() {
/
url="insertuser.php";
k = 5;
while (k<9){
url=url + "?usern=" + k;
url=url + "&sid=" + Math.random();
xmlreqGET(url)
k++;
}
}
</Script>
<body>
<p><Input Type="Button" Value="Upload" OnClick="Upload()"></p>
<p><div id="SeeTextAreaName">
Initial value of a div.</div></p>
</body>
</html>