如何从ajax响应中获取特定数据

时间:2013-01-01 09:41:12

标签: ajax jquery

我有一个链接,通过一些数据向特定网址发送ajax请求。 ajax url的目标执行一些操作并返回数据。现在我有一个问题,即ajax响应也包含所有的html。一些我怎么不能禁用布局或html之类的东西。现在你能告诉我怎么做这个任务。是否有一种火箭科学方法可以从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: - (

最好的问候

2 个答案:

答案 0 :(得分:0)

使用ajax json响应

$.ajax({


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

}
});

答案 1 :(得分:0)

在服务器端,您始终可以检查标头HTTP_X_REQUESTED_WITH以检测ajax请求。然后根据该条件,您可以切换响应的内容。

另外,如果你想从你的javascript ajax成功函数中删除响应中的一些html内容,那么我可以建议你围绕一个html注释包装所需的响应。例如:<!--AjaxResponseStart-->...<!--AjaxResponseEnd-->。然后它只是使用一些检查(对于undefined)和正则表达式只获得所需的内容:

以下是如何从响应中获取html内容的示例:

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

希望你得到我想说的话。