2013-10-17 234 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