1

私は一日中苦労してきましたが、$。ajax関数を使用してJSONオブジェクトを介してPHPファイルに送信するのが正しくないようです。私は最終的にそれを送信することを正しくしましたが、今ではデコードを拒否します。

//JQueryファイル

            var user = 
        {
            "email" : document.getElementById('email1').value,
            "password" : document.getElementById('pwd1').value,
            "fname" : document.getElementById('firstname').value,
            "lname" : document.getElementById('lastname').value,
            "gender" : Validator.getGender(),
            "dob" : document.getElementById('dob').value
        }; 
       JSON.stringify(user);

            user = {json:user};

            $.ajax({
                    type: "POST",
                    url: "register.php",
                    dataType: 'json',
                    data: user,
                    success: function(result)
                    {       

                        alert("It worked :D");
                        alert(result);
                    },
                    failure: function()
                    {

                        alert('whoops');
                    }
                });

//PHPファイル

<?php
    $json = $_REQUEST['json'];
    $json = stripslashes($json);

    $jsonobj = json_decode($json);

    $fname = $jsonobj->fname;
    $lname = $jsonobj->lname;
    $password = $jsonobj->password;
    $email = $jsonobj->email;
    $gender = $jsonobj->gender;
    $dob = $jsonobj->dob;
    echo $gender;

?>

私は完全にばかげたことをしていますか?今のところ、性別変数をエコーバックしていますが、実際にはこれを使用してデータベースに入力します。

前もって感謝します :)

編集:

私のphpファイルが次のようになったらどうなるでしょうか:

    session_start();
$db = mysql_connect("localhost", "root");
if(!$db)
{
    die("DB connection failed: " . mysql_error());
}

$db_select = mysql_select_db("tinyspace", $db);
if(!$db_select)
{
    die("DB connection failed: " . mysql_error());
}

$json_string = $_REQUEST["json"];
$jsonobj = json_decode($_REQUEST["json"]);
$fname = $jsonobj -> fname;
$lname = $jsonobj -> lname;
$pwd = $jsonobj -> password;
$email = $jsonobj -> email;
$gender = $jsonobj -> gender;
$dob = $jsonobj -> dob;

$sql("INSERT INTO tinyspace.users (email, password, firstname, lastname, gender, dob) VALUES ('$email','$password','$fname', '$lname','$gender','$dob')");

if (!mysql_query($sql,$db))
{
    die('Error: ' . mysql_error());
}

mysql_close($db);
4

1 に答える 1

0

問題は、結果datatype =jsonをエコーし​​ようとしていることです。そのため、jsonデータのみを受け入れて機能しません。

これを削除する必要があります

dataType: 'json',

またはこのような何かをエコーし​​ます

$gender=array();
$gender['gender']=$jsonobj->gender
echo json_encode($gender);

また、jsonを作成していません

これを使って

var user = 
        {
            "email" : document.getElementById('email1').value,
            "password" : document.getElementById('pwd1').value,
            "fname" : document.getElementById('firstname').value,
            "lname" : document.getElementById('lastname').value,
            "gender" : Validator.getGender(),
            "dob" : document.getElementById('dob').value
        }; 
      var userjson= JSON.stringify(user);

            user = {json:userjson};

また

data:{'json' :userjson}
于 2012-10-16T17:20:25.893 に答える