فرستادن آرگومان به تابع stateChanged

plague

Member
سلام
من یه کد ایجکس دارم که یه سری اطلاعات رو به یه صفحه میفرسته و وقتی نتیجه رو میگیره
تابع stateChanged با استفاده از تابع ajaxpage که ربطی به این سوال نداره صفحمون رو رفرش میکنه
کد:
function stateChanged()
{
  if (xmlhttp.readyState==4)
  {
     
 ajaxpage('page.php', 'mainContent');
  }
}
حالا اگه بخایم یه متغیر مثلا id رو که تویه تابع اصلی هستش و مقدار داره به این تابع stateChanged به عنوان آرگومان بدیم گه مثلا اینطوری بشه

کد:
function stateChanged()
{
  if (xmlhttp.readyState==4)
  {
     
 ajaxpage('page.php?id='+id, 'mainContent');
  }
}
طور باید این متغیر رو به این تابع رسوند که مقدارش رو حفظ کنه ؟

این تقریبا کده منه
کد:
function goodtitleedit(id)
{
    
xmlhttp=GetXmlHttpObject();
if (xmlhttp==null)
  {
  alert ("Browser does not support HTTP Request");
  return;
  }

url=encodeURI("goodhandler.php?id="+id);
xmlhttp.onreadystatechange=stateChanged;
xmlhttp.open("GET",url,true);
xmlhttp.send(null);

}

function stateChanged()
{
  if (xmlhttp.readyState==4)
  {
     
 ajaxpage('page.php', 'mainContent');
  }
}
..........
 
آخرین ویرایش:

k2-4u

Well-Known Member
سلام دوست عزیز
یک . صفت به xmlhttp اضافه کن . مثلا در کد زیر NewId
مقدار ID رو بده به این صفت
PHP:
xmlhttp.NewId=id;

function stateChanged()
{
  if (xmlhttp.readyState==4)
  {
     
 ajaxpage('page.php?id='+xmlhttp.NewId, 'mainContent');
  }
}
سپس در داخل کد استفادش کن
///
یک کار دیگه هم میشه کرد .
شما متغییر رو اگر خارج از تابع با var تعریف کنید
سراسری میشه
یعنی
PHP:
var NewId;

function stateChanged()
{
  if (xmlhttp.readyState==4)
  {
     
 ajaxpage('page.php?id='+NewId, 'mainContent');
  }
}
این کد جواب میده
 

plague

Member
ممنون اون مشکل حل شد حالا یه چیزه دیگه پیش اومده

من دو تا تابع دارم که هرکدوم کارشون جداست ولی از وقتی که تابع زیری رو اضافه کردم اونیکی تابع هم کارشو درست انجام نمیده یعنی همه اون اطلاعاتی که من میخام رد وبدل میکنه و تغییرات ایجاد میشن اما درمرحله ای که باید کاره نهایی رو انجام بده یعنی
کد:
if (xmlhttp.readyState==4)
  {
   alert('aa');
  
  }
میره ماله تابع پایینی رو انجام میده یعنی جوابی رو که ماله یه تابع دیگست به ما میده

کد:
{
  if (xmlhttp.readyState==4)
  {
      alert('bb');
  }
}
دلیلش چیه که همه کارارو درست انجام میده وقتی به فانکشن stateChanged میرسه میره ماله یه تابع دیگه رو اجرا میکنه

کد:
/***********************************************
poll  edit final
***********************************************/
    
    
function handleredit(id)
{
    
xmlhttp=GetXmlHttpObject();
if (xmlhttp==null)
  {
  alert ("Browser does not support HTTP Request");
  return;
  }
  
  var    namefild ="namefield"+id;

var    votefild ="votefield"+id;

var namefild=    document.getElementById(namefild).value ;

var votefild=    document.getElementById(votefild).value ;


url=encodeURI("poolhandler.php?id="+id+"&name="+namefild+"&vote="+votefild+"&do=edit");
xmlhttp.onreadystatechange=stateChanged;
xmlhttp.open("GET",url,true);
xmlhttp.send(null);
}
[COLOR=Black]
function stateChanged()
[COLOR=Red]{
  if (xmlhttp.readyState==4)
  {
   alert('aa');
  
  }
[/COLOR] [/COLOR]}

.........


/***********************************************
GOOD TITLE EDIT
***********************************************/

function goodtitleedit(id){
    
    
xmlhttp=GetXmlHttpObject();
xmlhttp.NewId=id; 

if (xmlhttp==null)
  {
  alert ("Browser does not support HTTP Request");
  return;
  }
  
  
 var goodname=    document.getElementById('goodname').value ;

var goodpic=    document.getElementById('goodpic').value ;

var goodprice=    document.getElementById('goodprice').value ;
url=encodeURI("goodhandler.php?id="+id+"&goodname="+goodname+"&goodpic="+goodpic+"&goodprice="+goodprice);
xmlhttp.onreadystatechange=stateChanged;
xmlhttp.open("GET",url,true);
xmlhttp.send(null);
}

function stateChanged()[COLOR=Red]
{
  if (xmlhttp.readyState==4)
  {
      alert('bb');
  }
[/COLOR]}

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

}
 
آخرین ویرایش:

k2-4u

Well-Known Member
خب . شما متد XMLHttpRequest رو 2 بار استفاده کردین
و onreadystatechange ها عوضی شده
///

در ضمن شما 2 تا تابع با یک نام دارین
stateChanged()
این کار اشتباه است
 

plague

Member
خب . شما متد XMLHttpRequest رو 2 بار استفاده کردین
و onreadystatechange ها عوضی شده
///

در ضمن شما 2 تا تابع با یک نام دارین
stateChanged()
این کار اشتباه است
اخه من فکر میکردم اینا تویه دوتا تابع جداست هرکدوم
برایه همین هم اسم بودنشون مشکل ایجاد نمیکنه
اسم stateChanged() ها رو عوض کردم درست شد
مطمئنی XMLHttpRequest مشکل ایجاد میکنه ؟
اخه ما تو هر دوتا تابع بهش نیاز داریم و باید باشه
 

k2-4u

Well-Known Member
اخه من فکر میکردم اینا تویه دوتا تابع جداست هرکدوم
برایه همین هم اسم بودنشون مشکل ایجاد نمیکنه
اسم stateChanged() ها رو عوض کردم درست شد
مطمئنی XMLHttpRequest مشکل ایجاد میکنه ؟
اخه ما تو هر دوتا تابع بهش نیاز داریم و باید باشه

. نه مشکلی نباید ایجاد کنه
پس با این حساب مشکل حله :wink:
 

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

بالا