2012-03-07 2 views
4

私はAJAXののresponseXMLに関する問題を抱えている... 私は私のコールバック関数から、このコードを持っている:AJAXのresponseXML

var lineString = responseXML.getElementsByTagName('linestring')[0].firstChild.nodeValue; 

しかし、ラインストリングのみ4096文字以内..残りの文字まで保持することができます拒絶される。

lineString が返すすべての値を取得するために何を使用するのかわかりません。なぜ私はAJAXのresponseXml を使用することを考えましたが、それでもすべてを収容することはできません。

私のラインストリングは、連結したログファイルの行からなり、ちょうど 行を区切ります。私は私のフォームでこのデータを取得する必要がありますので、PHPから読んだ後、私はAJAXを介してそれを返信します

あなたはあなたの提案がありますか?

+1

JSONとして入手できないのはなぜですか? XMLではなく –

+0

@MahanはJSONに慣れていません。より大きなデータ転送が可能ですか?それを見てください。 – tinks

+0

はい... JSONを2年間使用していて、XMLよりもはるかに高速です。ここで調べてみてください。http://www.w3schools.com/json/default.asp –

答えて

2

XMLは、ほとんどのAjaxリクエストに余分なマークアップを追加します。データエンティティで何らかのリストが必要な場合は、JSON形式で送信してください。

私はJSONを使用してデータで非常に大きな配列を取得しました。

まずJSONは、Ajaxリクエストが実際にJavascriptオブジェクトとして評価されるStringをリクエストすることを意味するJavascript Object Notationです。

一部のブラウザでは、JSONの解析をサポートしています。他の人は少し助けが必要です。私はthis little libraryを使用して、私が開発したすべてのWebアプリケーションでresponseTextを解析し、問題はなかった。

JSONの使い方と使い方を知ったので、ここでPHPコードのようになります。

$response = [ 
    "success" => true, // I like to send a boolean value to indicate if the request 
         // was valid and ok or if there was any problem. 
    "records" => [ 
    $dataEntity1, $dataEntit2 //.... 
    ] 
]; 

echo json_enconde($response); 

エコーを試してみてください。私はPHP 5.4の配列宣言構文を使用しました。 :)

あなたがどうなるAjaxを介してデータを要求する:

var response 
    ,xhr = getAjaxObject(); // XMLHttp or ActiveX or whatever. 
xhr.open("POST","your url goes here"); 
xhr.onreadystatechange=function() { 
    if (xhr.readyState==4 && xhr.status==200) { 
    try { 
     response = JSON.parse(xhr.responseText); 
    } catch (err) { 
     response = { 
      success : false, 
      //other error data 
     }; 
    } 

    if(response.success) { 
     //your data should be in response 
     // response.records should have the dataEntities 
     console.debug(response.records); 
    } 
    } 
} 

要約:

  1. JSONの構文解析は、PHPがJSONとしてマップを送信することができます
  2. JSON2ライブラリを経由して少しの助けを必要とし
  3. "成功/失敗"フラグとして成功ブールが広く使用されています

また、jQueryを使用している場合は、$ .ajax呼び出しでdataType: "json"プロパティを設定するだけで、成功のコールバックでJSON応答を受け取ることができます。