2

ajax の成功で 2 つの値 (どちらも単純な文字列) を比較したいと考えています。値 1 は php からのエコー、値 2 は JavaScript 変数です。しかし、次のようなことを試みると:

$.ajax({
    type: "POST",
    url: proccessPage,
    data: dataString,
    dataType: "text",
    success:function(result){

    alert (result);

    }
});

「[object Object]」というメッセージが表示されます。変更しようとするalert (result);

var response = $(result);
document.getElementById("div1").innerHTML = result;

ID「div1」のdivには適切な値があります。div を非表示にして値を使用できることはわかっていますが、結果を直接操作する方法はありますか? または、何らかの方法で結果を文字列に変換しますか? PHP のコード:

if (isset($_POST['submit']) && $_POST['submit']=="true")
echo "string";

ありがとう。

4

4 に答える 4

3

スクリプトで、データ型をhtmlに変更します。

dataType: "text",

dataType: "html",
于 2012-10-31T16:03:28.300 に答える
0

PHP関数からjson応答を作成し、必要なものをロードすることで成功しています。Json オブジェクトの既知の値を比較すると、JSON で宣言された既知のオブジェクト プロパティを指定することで、[オブジェクト オブジェクト] の戻り値の問題を処理できます。

$response = json_encode( array( 'success' => true , 'value1' => $my_result,);
header( "Content-Type: application/json" );
echo $response;
exit;

$my_result が正常な応答であることを確認するために、success bool を使用します。これは、AJAX が適切に実行される可能性があるためですが、これにより、有効な値を具体的に確認できます1

$.ajax に戻ります。

...
success: function(result){
  if(result['success']) { 
    document.getElementById("removeme").innerHTML = (result['value1'] == value2)? value1 : "Uh-oh. Something went wrong!";
  }
}
...

または、比較または実行する必要があるものは何でも、成功関数本体に適切なものを入れることができます。完全な実装を示すために、1 つの例を示しました。

于 2016-08-01T14:04:47.567 に答える
0

テキストの dataType は完全に問題ありません。PHP スクリプトが text/plain に戻るための MIME タイプを設定していることを確認してください。

PHP コード: header('Content-type: text/plain');

jQuery は、サーバーが言う内容に従って戻り値を処理します。dataType フィールドは単なるヒントです。http://docs.jquery.com/Specifying_the_Data_Type_for_AJAX_Requests

他のすべてが失敗した場合は、Firefox と Firebug のようなものを使用してください。これにより、サクセス クロージャー内にブレーク パイントを配置できるようになり、結果変数の値を調べることができます。

于 2012-10-31T16:21:00.780 に答える
-1

AJAXの最初のAは非同期を意味します。これは、リクエストが通常どおり実行されるが、コールバックはリクエストが応答を受け取ったときにのみ実行されることを意味します。スクリプトは応答を待つために一時停止しません。

そうは言っても、AJAXリクエストからの情報を使用する場合は、コールバックで使用する必要があります。そうしないと、使用できなくなります。

このようなもの:

$.ajax({
    type: "POST",
    url: proccessPage,
    data: dataString,
    dataType: "text",
    success:function(result){

        document.getElementById("removeme").innerHTML = result; 

    }
});
于 2012-10-31T16:04:57.960 に答える