2013-01-01 103 views
0

我有一個鏈接,它發送一個ajax請求到一個特定的URL與一些數據。 ajax url的目的地做一些操作並返回數據。現在我有一個問題,即ajax響應也包含所有的html。一些如何我不能禁用佈局或HTML像東西。現在你能告訴我我該怎麼做這個任務。是否有火箭科學的方法從ajax響應中獲取特定數據?如何從ajax響應中獲取特定數據

我有從here的想法,我會發送我的迴應在一些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>"; 

是否有任何其他的方式做到這一點... 順便提一下它也將返回undefined :-(

問候

+0

你的意思是說你只需要返回一部分返回的Ajax響應? – shawndreck

+0

@shawndreck肯定是親愛的 –

+0

你能改變對json的迴應嗎? – Rajesh

回答

0

使用AJAX JSON響應

$.ajax({ 


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

} 
}); 
0

在服務器端,您始終可以檢查標頭HTTP_X_REQUESTED_WITH以檢測ajax請求。然後基於這種情況,您可以切換回復的內容。

此外,如果您希望從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');  
} 

希望你得到我想說的。