0

//AJAXでデータを送信するJqueryコード

        $.ajax({
            type: "POST",
            url: "test.php",
            data:
            "fname="+ fname +
            "& lname="+ lname +
            "& address="+ address +
            "& city="+ city +
            "& state="+ state +
            "& zip="+ zip +
            "& phone="+ phone +
            "& useremail="+ useremail +
            //the following values are not being receieved by the php correctly
            "& subtotal="+ subTotal +
            "& quantity="+ quantity,
            success: function(){
            $('#oderBtn').hide(function({$('#orderTest').fadeOut();});
            }
        });

//AJAXデータを受信するためのPHPコード

$fname = htmlspecialchars(trim($_POST['fname']));
$lname = htmlspecialchars(trim($_POST['lname']));
$city = htmlspecialchars(trim($_POST['city']));
$state = htmlspecialchars(trim($_POST['state']));
$zip = htmlspecialchars(trim($_POST['zip']));
$address = htmlspecialchars(trim($_POST['address']));
$email = htmlspecialchars(trim($_POST['useremail']));

//these do not post correctly, i do not know why
$subTotal = htmlspecialchars(trim($_POST['subtotal']));
$quantity = htmlspecialchars(trim($_POST['quantity']));

したがって、問題は、fname、lname、city、state、zip、address、およびemailがすべて機能しているが、小計であり、数量が機能していないことです。firebugでは、すべて同じ方法でPOSTが実行され、PHPが受信していないようです。データを適切に。

echo file_get_contents( "php:// input");を追加します。PHPに送信すると、小計や数量など、送信されたすべてのものがエコーバックされますが、$ _POST['小計']を実行するだけでは値は取得されません。

この件に関してご協力いただきありがとうございます。

4

2 に答える 2

1

まず、そのような文字列を作成する必要はありません。オブジェクトリテラルを渡すだけです。

    $.ajax({
        type: "POST",
        url: "test.php",
        data: {
            fname: fname,
            lname: lname
            ...
        },
        success: function(){
        $('#oderBtn').hide(function({$('#orderTest').fadeOut();});
        }
    });

そして、jQueryは必要に応じてそれをシリアル化します。クエリ文字列を渡すので、POSTリクエストをまったく尊重しているのは印象的だと思います。

また、メールの後に機能しなくなったのではないかと疑っています。print_r($_POST);PHPで結果を貼り付けることができますか?

于 2012-08-06T22:40:41.330 に答える
0

$_GET[]ではなく使ってみました$_POST[]か?$_GETこれは、URLからデータを取得するために設計されているのに対し$_POST、フォーム送信から渡されるデータを取得するために設計されているため、私が最初に試すことです。

$fname    = htmlspecialchars(trim($_GET['fname']));
$lname    = htmlspecialchars(trim($_GET['lname']));
$city     = htmlspecialchars(trim($_GET['city']));
$state    = htmlspecialchars(trim($_GET['state']));
$zip      = htmlspecialchars(trim($_GET['zip']));
$address  = htmlspecialchars(trim($_GET['address']));
$email    = htmlspecialchars(trim($_GET['useremail']));
$subTotal = htmlspecialchars(trim($_GET['subtotal']));
$quantity = htmlspecialchars(trim($_GET['quantity']));

JSON配列としてのこの出力の例:

$data = array(
    'fname'    => htmlspecialchars(trim($_GET['fname']));
    'lname'    => htmlspecialchars(trim($_GET['lname']));
    'city'     => htmlspecialchars(trim($_GET['city']));
    'state'    => htmlspecialchars(trim($_GET['state']));
    'zip'      => htmlspecialchars(trim($_GET['zip']));
    'address'  => htmlspecialchars(trim($_GET['address']));
    'email'    => htmlspecialchars(trim($_GET['useremail']));
    'subTotal' => htmlspecialchars(trim($_GET['subtotal']));
    'quantity' => htmlspecialchars(trim($_GET['quantity']));
);

echo json_encode($data);

編集:

encodeURI()また、アンパサンドやその他の文字がURL文字列を台無しにしないように、jQueryで使用する必要がある場合もあります。

$.ajax({
    type: "GET",
    url: "test.php",
    data: encodeURI(
        "?fname="     + fname +
        "&lname="     + lname +
        "&address="   + address +
        "&city="      + city +
        "&state="     + state +
        "&zip="       + zip +
        "&phone="     + phone +
        "&useremail=" + useremail +
        "&subtotal="  + subTotal +
        "&quantity="  + quantity
    ),
    success: function(response){
        alert(response); // Will show the JSON array
        $('#oderBtn').hide(function({$('#orderTest').fadeOut();});
    }
});

フィドル: http: //jsfiddle.net/xNSLX/

于 2012-08-06T22:37:30.047 に答える