سؤال

في الصفحة الرئيسية للموقع لدي مستخدم جديد استمارة التسجيل.أنه يحتوي على حقل "اسم المستخدم".عندما يقوم المستخدم بإدخال اسم المستخدم و يتم التركيز أشار إلى حقل آخر ، اياكس يتم تنفيذ التعليمات البرمجية التي يتحقق ما إذا كان أي مستخدم مع إدخال اسم المستخدم موجود بالفعل أم لا.

AJAX البرمجية التي أنا باستخدام هذا:

function toggle_username(userid) { 
    if (window.XMLHttpRequest) { 
        http = new XMLHttpRequest(); 
    } else if (window.ActiveXObject) { 
        http = new ActiveXObject("Microsoft.XMLHTTP"); 
    } 
    handle = document.getElementById(userid); 
    var url = 'ajax.php?'; 
    if(handle.value.length > 0) { 
        var fullurl = url + 'do=check_username_exists&username=' + encodeURIComponent(handle.value); 
        http.open("GET", fullurl, true); 
        http.send(null); 
        http.onreadystatechange = statechange_username; 
    }
    else
    { 
        document.getElementById('username_exists').innerHTML = ''; 
    }
}

ملف "AJAX.PHP" دعا من فوق رمز مثل هذا:

<?php 
mysql_connect ('localhost', 'MyServer', 'user1'); 
mysql_select_db('globaldb'); 

$do = $_GET['do']; 
switch($do) { 
    case 'check_username_exists': 
        if(get_magic_quotes_gpc()) { 
            $username = $_GET['username']; 
        }else{ 
            $username = addslashes($_GET['username']); 
        } 
        $count = mysql_num_rows(mysql_query("SELECT * FROM `student_login` WHERE `username`='".$username."'")); 
        header('Content-Type: text/xml'); 
        header('Pragma: no-cache'); 
        echo '<?xml version="1.0" encoding="UTF-8"?>'; 
        echo '<result>'; 
        if($count > 0) {
            $_SESSION['UserExists'] = "true";

        }else{ 
            $_SESSION['UserExists'] = "false";
        } 
        $_SESSION['UserExists'] = "false";
        echo '</result>'; 
    break; 
    default: 
        echo 'Error, invalid action'; 
    break; 
} 
?>

في نموذج التسجيل فقط تحت اسم المستخدم مربع الإدخال ، أريد تعريف القسم حيث أنا يمكن أن تظهر رسائل:

المستخدم مع هذا الاسم موجود ، أو

اسم المستخدم هو متاح.

في الصفحة الرئيسية, أنا باستخدام البرمجية التالية:

<input name="username" type="text" id="username"  onchange="toggle_username('username')" style="width:150px;" maxlength="40" size="22" >

<?PHP

   if ($_SESSION['UserExists'] == "true")
   {
    echo "<div id='username_exists' style='font-size: 11px;font-weight: bold;color:red'>User with this name unavailable.</div>";
   }
  else
  {
        echo "<div id='username_exists' style='font-size: 11px;font-weight: bold;color:darkgreen'> User with this name is available </div>";
  }
?>

الصفحة الرئيسية يتكون من رمز أعلاه و أول كتلة التعليمات البرمجية (جافا سكريبت) على رأس الذي أعطيته.

هذا الكود لا يعمل.و أعتقد أن السبب هو أنني وشملت الرسائل في PHP.يجري من جانب الملقم, فإنه لا يظهر الرسائل.

يرجى اسمحوا لي أن أعرف كيفية التعامل مع هذه المسألة.سواء لتعديل شفرة جافا سكريبت التي المكالمات AJAX أو تتضمن شيئا في PHP.

يرجى أيضا ملاحظة أنه في الواقع ما أريده هو أن تظهر الرسائل في أخضر أو أحمر اللون.إذا كان اسم المستخدم هو متاح ، ثم الأخضر آخر في اللون الأحمر.

لا يوجد حل صحيح

نصائح أخرى

أود أن تفعل هذا باستخدام مسج و PHP صفحة عودة رمز (0 false, 1 صحيح) أو ما شابه ذلك.ثم يمكنك استخدام مسج هو addClass (طريقة) اعتمادا على النتائج التي تم إرجاعها ، كل في جافا سكريبت.

ماذا عن وجود ajax.php العودة قليلا من قبل تنسيق HTML باستخدام statechange_username الدالة التي قمت بتعيينها إلى عملية الاستجابة إلى التمسك بها في عنصر نائب div/span?

بالمناسبة, لماذا وضع الدورة متغير ؟

أعتقد أن كنت في عداد المفقودين statechange_username وظيفة ، شيء من هذا القبيل

function statechange_username() 
{ 
    if (http.readyState==4)
    { 
        document.getElementById(\"username_eixsts\").innerHTML=http.responseText;
    }
}
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top