PDA

View Full Version : یه مشکل کوچولو با Ajax !!!



mohsenw700
چهارشنبه 31 تیر 1388, 13:20 عصر
سلام
خسته نباشید
سر راست میرم سر اصل مطلب

ببینید من یه صفحه دارم به اسم index.php و بعدش توی این صفحه با ajax یک صفحه دیگر به نام test.php ظاهر میکنم !

خوب تا این جا همچی درسته ولی مشکل اینجاست که در صفحه test.php من کد هایی javascript وجود دارد و زمانی که این صفحه test.php در صفحه index.php ظاهر میشود دیگر این کدهای javascript کار نمی کنند!!!

به نظر خودم ممکنه مشکل از نحوه ظاهر شدن باشه یعنی اینطوری (اینجا مثلا تو div) ظاهرشون میکنم


<div id='feedback'></div>
حالا به نظر دوستان باید چه کارکنم تا کدهای داخل test.php هم درست اجرا و خوانده بشن؟

sas523
چهارشنبه 31 تیر 1388, 17:07 عصر
سلام ؛
اون موقع این فایل test.php به تنهایی اجرا میشه ؟

یعنی کدهای جاوات اون تو درست کار میکنه ؟

- اگر آره ؛ نحوه صدا زدن صفحه جدیدت که گویا test.php رو چه جوری انجام دادی ؟

- اگر نه هم که پس اول اون رو جداگانه بررسی کن ؛ کدهاش رویه مروری بکن

mohsenw700
پنج شنبه 01 مرداد 1388, 06:24 صبح
بله !

در واقع من دوباره می خواهم از ajax در test.php استفاده کنم که آن وقت کار نمیکنه!
توضیحات هم لای کد هام گذاشتن!
این ها همه درست کار میکنند!(عمری کارم با همینه)


<script language="javascript" >
// فرامين مربطو به جاوا اسكريپت
//ايجاد شيئ XML
function makeObject(){
var x;
var browser = navigator.appName;
//detect the client browser
if(browser == "Microsoft Internet Explorer"){
x = new ActiveXObject("Microsoft.XMLHTTP");
}else{
x = new XMLHttpRequest();
}
return x;
}

//اختصاص متغير به شيئ XML
var request = makeObject();

//جهت عدم نمايش صفحه يكسان از يك متغير استفاده مي‌كنم

function main(){

user=123;
request.open('POST', 'main.php',true);
request.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
request.onreadystatechange = parseInfo;
request.send('user='+user);
}

main();
//ارسال اطلاعات و نمايش وضعيت
function parseInfo(){
if(request.readyState == 1){
document.getElementById('result').innerHTML ='<div class=div_ajax_loading dir=rtl ><img src=images/page_loading_ani.gif width=15 height=15 border=0><br/> در حال بارگذاري </div>';

}
if(request.readyState == 4){
var answer = request.responseText;
document.getElementById('result').innerHTML =answer;
result = answer;

}
}
</script>
این جوری هم در جایی از همین صفحه بازخوردش را میبینم!


<div id='result'></div>

امیـرحسین
شنبه 03 مرداد 1388, 15:35 عصر
سلام
منم مشکل مشابه رو دارم. منتظر بودم یکی جواب بده.
تا وقتی کدهای جاوااسکریپت بصورت onclick اجرا میشن، مشکلی نیست ولی امکان تعریف کردن Event برای المانهای جدید نیست. یعنی در واقع جاوااسکریپت elementهای اضافه شده رو جزء DOM نمی دونه.
من به سرم زد که بجای اینکه از responseText استفاده کنم و اطلاعات رو بصورت متن چاپ کنم، اون متن رو بصورت XML دربیارم و توسط responseXML بگیرم و در نهایت به عنوان element در صفحه appendChild کنم یعنی یه جورایی گولش بزنیم فکر کنه که elmenetهای جدید، ساخته شدند....
نظر شما چیه؟

eAmin
شنبه 03 مرداد 1388, 18:20 عصر
سلام.

ایراد کار خیلی واضحه! دلیلش هم این هست که Ajax درخواست رو بصورت رشته ( string ) برگشت می ده، همین موضوع جلوی کدهای js رو می گیره، برای حل این مشکل بهتره این دو تاپیک رو ببینید:
http://barnamenevis.org/forum/showthread.php?t=155930
http://forum.majidonline.com/showthread.php?t=100312
موفق باشید.

امیـرحسین
شنبه 03 مرداد 1388, 21:33 عصر
تنک یو وری ماچ :چشمک: