0

私はウェブサイトを作成しており、ユーザーが登録してmysqliデータベースに情報を入力できるsignup.phpページがあります。これを行うと、ほとんどそこにいますが、この1行で問題が発生し続けます。

        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);
}

}

4

1 に答える 1

1

500 内部サーバー エラー コードは HTTP 応答コードであり、サーバーにアクセスしてエラーを返したことを示します。したがって、JS コードに問題があるようには見えません (少なくとも、投稿した内容からわかる限り)。

var_dump($_REQUEST); die();signup.php の最初の行として実行してみてください。それは 200 ステータス コードを返しますか? その場合は、500 Internal Server Error に戻るまでその行をサーバー上のコードの下に移動してみてください。問題の原因となっている行が見つかります。


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.');
        },
    });
}
于 2013-10-17T02:00:40.950 に答える