2013-10-17 233 views
0

我正在製作一個網站,我有一個signup.php頁面,用戶可以在其中註冊並將其信息輸入到mysqli數據庫中。當我這樣做,我幾乎沒有,我只是不停地在這一行獲得了一個問題:用戶註冊註冊錯誤

 ajax.send("&u="+u+"&e="+e+"&p="+p1+"&g="+g); 

它基本上是發送變量的AJAX/JavaScript的檢查,準備運輸到服務器。但是我在這條線上遇到了內部服務器500錯誤。有任何想法嗎?如果你想要,我會發布更多的代碼。

function ajaxReturn(x){ 
if(x.readyState == 4 && x.status == 200){ 
    return true; 
} 
} 
function signup(){ 
var u = _("username").value; 
var e = _("email").value; 
var p1 = _("pass1").value; 
var p2 = _("pass2").value; 
var g = _("gender").value; 
var status = _("status"); 
if(u == "" || e == "" || p1 == "" || p2 == "" || g == ""){ 
    status.innerHTML = "Fill out all of the form data"; 
} else if(p1 != p2){ 
    status.innerHTML = "Your password fields do not match"; 
} else { 
    _("signupbtn").style.display = "none"; 
    status.innerHTML = 'please wait ...'; 
    var ajax = ajaxObj("POST", "signup.php"); 
    ajax.onreadystatechange = function() { 
     if(ajaxReturn(ajax) == true) { 
      if(ajax.responseText != "signup_success"){ 
       status.innerHTML = ajax.responseText; 
       _("signupbtn").style.display = "block"; 
      } else { 
       window.scrollTo(0,0); 
       _("signupform").innerHTML = "OK "+u+", check your email inbox and junk mail box at <u>"+e+"</u> in a moment to complete the sign up process by activating your account. You will not be able to do anything on the site until you  successfully activate your account."; 
      } 
     } 
    } 
    type:post; 
    ajax.send("&u="+u+"&e="+e+"&p="+p1+"&g="+g); 
} 

}

回答

1

500內部服務器錯誤代碼是一個HTTP響應代碼,表示你已經達到了服務器並已回錯誤。所以它看起來不是你的JS代碼的問題(至少據我們可以告訴你已經發布的內容)。

嘗試做var_dump($_REQUEST); die();作爲signup.php中的第一行。這是否給你一個200狀態碼?如果是這樣,請嘗試將該行沿着服務器上的代碼向下移動,直到回到500內部服務器錯誤,並且發現導致該問題的行。


您有問題使用jQuery標記,但我在您的代碼示例中看不到任何jQuery。如果你確實有它,試試這個:

function signup() { 
    var status = $('#status'); 
    var signupbtn = $('#signupbtn'); 
    var data = { 
     u: $('#username').val(), 
     e: $('#email').val(), 
     p: $('#pass1').val(), 
     g: $('#gender').val() 
    }; 

    if (data.u == '' || data.e == '' || data.p == '' || data.g == '') { 
     status.text('Fill out all of the form data'); 
     return; 
    } else if (data.p != $('#pass2').val()) { 
     status.text('Your password fields do not match'); 
     return; 
    } 

    signupbtn.hide(); 
    status.text('please wait...'); 

    $.ajax({ 
     type: 'post', 
     url: 'signup.php', 
     data: data, 
     success: function(responseText) { 
      if (responseText != 'signup_success') { 
       status.text(responseText); 
       signupbtn.show(); 
       return; 
      } 

      window.scrollTo(0, 0); 
      $('#signupform').html('OK '+ data.u +', check your email inbox and junk mail box at <u>'+ data.e +'</u> in a moment to complete the sign up process by activating your account. You will not be able to do anything on the site until you successfully activate your account.'); 
     }, 
    }); 
} 
+0

我得到的東西看起來像這樣的陣列(1){[「PHPSESSID」] =>字符串(32)「be48f6f5071fe91a3d5f6c654652a3da」} – elliotanderson

+0

所以,它聽起來像變量沒有正確發送到服務器。查看使用jQuery的AJAX請求示例的更新答案。 – Travesty3