PDA

View Full Version : سوال: آپدیت مقادیر مختلف با آزاکس



parsbin
یک شنبه 08 فروردین 1389, 23:13 عصر
سلام
یک برنامه نوشتم که بعد از کلیک روی یک تکست باکس مقدار خاصی رو در همون تکست باکس در مدت زمان خاصی مدام آپدیت کنه.منتها مشکلم اینه که نمیتونم کاری کنم که فقط اون تکست باکس آپدیت بشه.یا همه رو آپدیت میکنه یا هیچ کدومو.
برنامه ام یک چیزی شبیه اینه.چیکار باید کنم؟در ضمن نمیخوام بصورت کلیک کردن باشه.میخوام با لود صفحه اتوماتیک این رویداد یعنی آپدیت مقادیر صورت بگیره. و طوری باشه که هر تکست باکس مقدار مخصوص خودش رو بگیره.
صفحه اصلی


<html><head>
<script type="text/javascript" src="selectuser.js"></script>
</head>
<body >
<form>
name: <input type=text id="user1" onclick="setInterval('showUser(\'user1\')', 1000);"><br>
name: <input type=text id="user2" onclick="setInterval('showUser(\'user2\')', 1000);"><br>
</form>
</body></html>
جاوا اسکریپت



var xmlhttp;

function showUser(str)
{
var reza=str;

xmlhttp=GetXmlHttpObject();
if (xmlhttp==null)
{
alert ("Browser does not support HTTP Request");
return;
}
var url="getuser.php";
url=url+"?q="+str;
url=url+"&sid="+Math.random();
xmlhttp.onreadystatechange=stateChanged;
xmlhttp.open("GET",url,true);
xmlhttp.send(null);
}

function stateChanged()
{
if (xmlhttp.readyState==4)
{
document.getElementById("user1").value=xmlhttp.responseText;
}
}

function GetXmlHttpObject()
{

if (window.XMLHttpRequest)
{
// code for IE7+, Firefox, Chrome, Opera, Safari
return new XMLHttpRequest();
}
if (window.ActiveXObject)
{
// code for IE6, IE5
return new ActiveXObject("Microsoft.XMLHTTP");
}
return null;
}
پی اچ پی



<?php
$q=$_GET["q"];
echo $q;
?>

امیـرحسین
یک شنبه 08 فروردین 1389, 23:56 عصر
من درست متوجه نشدم مشکل کجاست. می تونید کدها رو در آخر body یا در رویداد onload اجرا کنید تا خودبخود اجرا بشه. اگر از فریم ورکها استفاده می کنید که خودشون تابع لازم رو که زودتر از onload اجرا میشه رو دارند. اگر به فریم ورکها علاقه ندارید، این لینک (http://code.google.com/p/domready/) یک اسکریپته که فقط تابع domready توشه (تابعی که به محض تکمیل DOM اجرا میشه - زودتر از onload).

به هر طریق، وقتی کدها از onclick به onload منتقل بشند. قاعدتا باید هر یک ثانیه یکبار، آژاکس اجرا بشه و فیلد اول (user1) پر شه. یعنی مشکلی نمی بینم.

parsbin
دوشنبه 09 فروردین 1389, 00:04 صبح
مشکل اینه که در فیلد user1 و user2 یک مقدار برگردونده میشه.
میخوام برای هر فیلدی مقدار خاص خودش برگردونده بشه.مشکل اصلیم اینه.
مثلا اگر در onlod در body یک اینتروال اگر قرار بدم مشکل تایمش حل میشه ولی در تمام فیلدها یک مقدار نمایش داده میشه.در صورتی که میخوام برای هر فیلد مقدار مخصوص به خودش نمایش داده بشه.

exlord
چهارشنبه 11 فروردین 1389, 11:50 صبح
function stateChanged() {
if (xmlhttp.readyState == 4) {
document.getElementById("user1").value = xmlhttp.responseText;//<--- chera user1????
}
}

xmlhttp.onreadystatechange = function () {
if (xmlhttp.readyState == 4) {
document.getElementById(str).value = xmlhttp.responseText; //<------------------
}
};
من مشکلی ندیدم این الان باید درست کار کنه.........