ホームページ >ウェブフロントエンド >jsチュートリアル >ajaxがjsonデータをunknown_AJAXとして取得する理由の分析 関連

ajaxがjsonデータをunknown_AJAXとして取得する理由の分析 関連

韦小宝
韦小宝オリジナル
2017-12-16 14:24:492126ブラウズ

Ajax を使用すると、Web アプリケーションの表示や動作を妨げることなく、バックグラウンドでデータを取得できます。この記事では、ajax が json データを未定義として取得する理由を主に紹介します。ajax に興味のある方は参考にしてください。

非同期 JavaScript と XML (Ajax) は、新世代の Web サイトを推進する鍵です。 Web 2.0 サイト) テクノロジー。 Ajax を使用すると、Web アプリケーションの表示や動作を妨げることなく、バックグラウンドでデータを取得できます。 XMLHttpRequest 関数を使用してデータを取得します。これは、クライアント側 JavaScript が HTTP 経由でリモート サーバーに接続できるようにする API です。 Ajax は、複数の場所のコンテンツを 1 つの Web アプリケーションに統合する多くのマッシュアップの原動力でもあります。

一般に、サーバーから送信された json 値を処理する場合、次の 2 つの方法で処理します。 1 つは eval() 関数を使用する方法です。 var dataObj=eval("("+data+")");//json オブジェクトに変換します (注: データは json データです)

2. 戻り値の分析には Function オブジェクトを使用します。 var json =(new Function("","re​​turn "+data))();var dataObj=eval("("+data+")");//转换为json对象(注:data为json数据);

2. 使用Function对象来进行返回解析。var json =(new Function("","return "+data))();

しかし、今日プロジェクトに取り組んでいたとき(プロジェクトでは struts2 を使用していました)、これら 2 つのメソッドを使用しましたjson を読み取ると、出力は常に未定義になります。インターネットで多くの情報を調べましたが、そのほとんどは説明できませんでした。後で、著者もこの状況に遭遇したという記事を見つけました。彼の解決策は、アクションで戻り値を json 属性として宣言することでした。自分のプロジェクトでテストしたところ失敗したため、解決策は再度転送することでした。以下は私個人の考えですが、バックグラウンドから送信されるデータはjson属性として宣言されていますが、フロントに渡す際には実際にはjsonオブジェクトではなく文字列として処理する必要があります。バックグラウンドのデータを取得して json オブジェクトに変換し、json の値を取得します。ただし、バックグラウンドから送信される値が必ずしも標準の json 形式の文字列であるとは限りません。上記の 2 つの方法のいずれかを介してバックグラウンドから送信されるオブジェクトを変換しますが、このときに変換される json オブジェクトは実際には文字列のままです。標準の json 文字列を再度変換すると、json オブジェクトになります。

以下はコードの一部です:

 result = JSONObject.fromObject(map).toString();//后台代码,将map转成json对象
      success : function(result) {//前台返回值代码
var obj = eval("("+result+")");
//var data1 =(new Function("","return "+obj))();
var data1=eval("("+obj+")");
alert(data1.name);
      }

概要

上記はエディターが紹介した、ajaxが未定義としてjsonデータを取得する理由の分析です。みんなに! !

関連する推奨事項:

AJAX で非同期同期リクエストを実装する方法

ネイティブ JS が AJAX と JSONP を実装する方法

Ajax の複数のメソッド非同期ファイルのアップロード

以上がajaxがjsonデータをunknown_AJAXとして取得する理由の分析 関連の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。