چرا توی کدهای زیر مقدار xmlHttp.readyState همواره برابر 0 هست؟

i-php-i

Active Member
چرا کد آژاکسی که نوشتم، مقدار نال از سرور دریافت می کنن؟

چرا کدهای آژاکسی که نوشتم، مقدار نال از سرور دریافت می کنن؟

لطفا توضیح بدید.


کد:
var xmlHttp = new XMLHttpRequest();
کد:
function process()
{
    var ptitle = document.getElementById('pTitle').value;
        if(xmlHttp.readyState==4 || xmlHttp.readyState==0)
        {
            try
            {
       //         alert (xmlHttp.readyState); return false;
                xmlHttp.open("POST","ajax.php",true);
                xmlHttp.onreadystatechange=handleServer;
                xmlHttp.send('pTitle=' + ptitle);    
            }
            catch (e)
            {
                alert ("امکان اتصال به سرور وجود ندارد\n" + e.toString());
                return false;
            }
        }
        else { alert ("امکان انجام درخواست شما وجود ندارد، لطفا مجددا تلاش کنید."); return false;}
}
کد:
function handleServer()
{
//    alert (xmlHttp.status);return false;
    if(xmlHttp.readyState==4 && xmlHttp.==200)
    {
        try
        {
            handleRespons();    
        }
        catch(e)
        {
            alert (".هنگام دریافت داده ها از سرور مشکلی رخ داده است\n" + 
            e.toStrin());    
        }    
    }
    else
    {
        alert (".هنگام دریافت داده ها از سرور مشکلی رخ داده است\n" +
         xmlHttp.statusText);
    }    
}
کد:
<?php
    $res='<?xml version="1.0" encoding="utf-8"?>'.'<response><result>'."$_POST[pTitle]".'</result></response>';
    header ('content-Type: text/xml');
    echo "$res";
?>
الان کدها رو بررسی کردم و دیدم که دو مشکل دارم. اول تابع ob_start رو به کد پی اچ پی اضافه نکرده بودم کردم و مشکل دیگه هم استفاده از شرط && xmlHttp.status==200 توی کد جاوا اسکریپت بود.

الان اتصال به سرور بخوبی برقرار می شه اما تابع handleServer که وظیفش نمایش اطلاعات دریافتی از سرور هست فقط یک پنجره خالی نمایش می ده.

کدهام رو اینجا قرار می دم لطفا بررسی کنید.

کد:
var xmlHttp = xmlobject();
function process()
{
    xmlHttp.onreadystatechange=handleServer;
    xmlHttp.open("POST","ajax.php",true);
    xmlHttp.setRequestHeader("Content-type","application/x-www-form-urlencoded");
    xmlHttp.send('p1=p2');    
}

function handleServer()
{
    if(xmlHttp.readyState==4)
    {
        alert(xmlHttp.responseText);
    }
}


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

eAmin

Well-Known Member
اینکه کدهاتون بدرستی کار نمیکنند رو در این تاپیک توضیح دادم.
متاسفانه شما همینطوری کد می نویسید، بدون اینکه بدونید اون کد/دستور مورد نظر دقیقا چه کاری انجام میده! وقتی داده های شما از طرف سرور بصورت XML فرستاده میشن، شما هم باید بصورت XML اونها رو دریافت کنید.
کد:
function handleServer()
{
    if(xmlHttp.readyState==4)
    {
        alert(xmlHttp.respon***ML);
    }
}
r e s p o n s e XML فاصله ها رو حذف کنید.
پراپرتی status هم چک میکنه که ببینه آیا ارتباط شما با سرور برقرار هست یا خیر. برای اینکه اروری دریافت نکنید صفحه خودتون رو از طریق localhost اجرا کنید.

موفق باشید.
 

i-php-i

Active Member
اینکه کدهاتون بدرستی کار نمیکنند رو در این تاپیک توضیح دادم.
متاسفانه شما همینطوری کد می نویسید، بدون اینکه بدونید اون کد/دستور مورد نظر دقیقا چه کاری انجام میده! وقتی داده های شما از طرف سرور بصورت XML فرستاده میشن، شما هم باید بصورت XML اونها رو دریافت کنید.
کد:
function handleServer()
{
    if(xmlHttp.readyState==4)
    {
        alert(xmlHttp.respon***ML);
    }
}
r e s p o n s e XML فاصله ها رو حذف کنید.
پراپرتی status هم چک میکنه که ببینه آیا ارتباط شما با سرور برقرار هست یا خیر. برای اینکه اروری دریافت نکنید صفحه خودتون رو از طریق localhost اجرا کنید.

موفق باشید.
مشکل به طور کامل حل شد. با سرور تماس می گیرم، پاسخ سرور رومی خونم و نمایش می دم.

مشکل این بود که تابع process رو به صورت زیر فراخوانی می کردم.
کد:
<form id="form1" name="form1" method="post" action="new.php"  onSubmit="return process()">
الان با قرار دادن این تابع توی تگ مربوط به دکمه ارسال، همه چیز به خوبی پیش می ره. مقدار status هم 200 هست.
 

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

بالا