0

一部のデータを含む特定の URL に ajax リクエストを送信するリンクがあります。ajax url の宛先は何らかの操作を行い、データを返します。今、ajax 応答にもすべての html が含まれているという問題があります。レイアウトやhtmlのようなものを無効にできない方法もあります。では、このタスクをどのように行うことができるか教えていただけますか。ajax応答から特定のデータを取得するロケット科学的な方法はありますか?

ここから、いくつかの html 要素で応答を送信し、その html 要素を取得するというアイデアを得ました。しかし、それは非常に悪いアプローチに見えます。これまでのところ私が試したことはこれです

$.ajax({
        url : "<?php echo $this->url(array('controller'=>'index','action'=>'ajaxcall','name'=>'shahrukh','id'=>377),'default');?>",
        type: "post",
        data: {car: 'Honda' },

        success: function(data){

           var $response=$(data);

           var oneval = $response.filter('#one').html();
           alert(oneval);
      }});

サーバー側で私はただやります

 echo "<div id='one'>Ajax response</div>";

これを行う他の方法はありますか...ちなみに、未定義も返します:-(

よろしくお願いします

4

2 に答える 2

0

ajax json レスポンスを使用する

$.ajax({


url:"sdsdds.jsp",
dataType:'json',
success:function(jsonDataFrmServer){
alert(jsonDataFrmServer.myCUstomData);
alert(jsonDataFrmServer.whateverContentForHtml);

}
});
于 2013-01-01T09:43:57.783 に答える
0

サーバー側では、ヘッダーをいつでもチェックしてHTTP_X_REQUESTED_WITHajax リクエストを検出できます。そして、その条件に基づいて、応答の内容を切り替えることができます。

また、JavaScript ajax 成功関数の応答から一部の html コンテンツを取り除きたい場合は、必要な応答を html コメントで囲むことをお勧めします。例: <!--AjaxResponseStart-->...<!--AjaxResponseEnd-->. 次に、いくつかのチェック(未定義の場合)と正規表現を使用して、必要なコンテンツのみを取得するだけです。

以下は、応答から HTML コンテンツを取得する方法のサンプルです。

pattern = /[\s\S]*?<\!--AjaxResponseStart-->([\s\S]*)<\!--AjaxResponseEnd-->[\s\S]*/i;
if(str.match(pattern)){
  return reponse.replace(pattern, '$1');    
}

私が言おうとしていることを理解していただければ幸いです。

于 2013-01-01T09:53:48.710 に答える