0

自分のコードを Web 上の他の例と比較しましたが、まだエラーが見つかりません。ページを読み込んで [送信] をクリックしても、画面に何も表示されません。ただし、Firebug では、POST 200 OK画面に表示されるはずの PHP スクリプトが POST 応答タブに表示されます。

Firebug は適切に応答しているため、何が問題なのか混乱しています。

基本的な HTML フォーム

<form id="form" action="" method="post">
    <input type="submit" name="submit" id="submit" value="submit"/>
</form>
<div id="results"></div>

jQuery は JS オブジェクトを作成します。オブジェクトは と を介して送信されJSON.stringifyますJSON.parse。submit イベント ハンドラーは、$.ajax. JSON データが渡されok.php、理論的には、スクリプトで呼び出された PHP 情報を返す必要があります。

var addIt = new Object();

addIt.one = "one";
addIt.two = 2;
addIt.three = addIt.one +" + "+ addIt.two +" = "+ "three";

$jsonAddIt = JSON.stringify(addIt);
$jsonAddIt = JSON.parse($jsonAddIt);

$('#submit').click(function(e){
    e.preventDefault();

    $.ajax({
        type: 'POST',
        url: 'ok.php',
        dataType:'json',
        data: ({ json:$jsonAddIt }),
        success:function(data) {
            $("#results").html(data);
        }
    });
});

PHP

<?php
    $ajaxInfo = $_POST["json"];
    if ($ajaxInfo !="")
    {
        echo "info transfered"; 
    }
    else 
        echo "nothing";
?> 

<div id="returned">
    <?php print_r($ajaxInfo); ?>
</div>
4

3 に答える 3

2

dataType を JSON に設定すると、jQuery ajax リクエストが作成され、JavaScript オブジェクトに自動的に解析されます。ここには 2 つの解決策があります。ajax リクエストの dataType を変更します。

$.ajax({
                     type:'POST',
                        url: 'ok.php',
                        dataType:'text',
                        data: ({json:$jsonAddIt}),
                        success:function(data){
                             $("#results").html(data);
                            }
});

または、このライブラリを使用してオブジェクトを文字列化することもできます。

$.ajax({
                     type:'POST',
                        url: 'ok.php',
                        dataType:'json',
                        data: ({json:$jsonAddIt}),
                        success:function(data){
                             $("#results").html(JSON.stringify(data));
                            }
});

それが役に立てば幸い。

于 2012-12-11T16:31:39.363 に答える
1

問題はあなただと思いますdataType。と言うとjson、期待しているコンテンツが であることを jQuery に伝えることになりますjson。PHPがヘッダーでコンテンツタイプをhtmlに設定している可能性があります。それを削除できるはずで、jQuery は応答のヘッダーから自動的にそれを把握します。

于 2012-12-11T16:37:16.977 に答える
1

これらの 2 行は必要ありません。2 行目は最初の行を元に戻します。両方を削除するだけです。

$jsonAddIt = JSON.stringify(addIt);
$jsonAddIt = JSON.parse($jsonAddIt);

ajax リクエストが成功した場合、この行は[object Object]div に表示されます。それ以外の場合は何もしません (これが現在の結果です)。

$("#results").html(data)

現在、期待される JSON データ型を返していないため、ajax リクエストは実際には失敗しています。dataType を「html」に変更すると機能します。

$.ajax({
    type:'POST',
    url: 'ok.php',
    dataType:'html',
    data: {json:addIt},
    success:function(data){
        $("#results").html(data);
    }
});

また、

var addIt = new Object();

する必要があります

var addIt = {};
于 2012-12-11T16:34:44.350 に答える