包含来自服务器的html标记的回调响应在获取到ajax jquery

时间:2016-10-27 12:27:46

标签: jquery html ajax

我正在提交ajax表格,并在Json回复。一切正常,除了我需要向你发送包含一些html的用户的响应的实例,正好是用户查看特定数据的url链接。 因此,挑战是来自服务器的回调响应失败从而返回错误。但如果我删除HTML链接,一切正常。此外,如果我检查浏览器检查元素中的网络信息,则会收到包含预期链接的所需响应消息,但jquery似乎无法显示它。

如果说明是重要的或必要的,那么它是一个基于codeigniter的App。

下面是回调响应中包含的html:

<a href="www.myurl.com/index.php/student/parent-profile/b38d128b180b04afc">Click here to View Profile</a>

我需要有关如何将上面的url与从服务器返回的任何其他文本一起传递的帮助。我需要知道如何通过编码和解码数据或任何其他替代方法来完成这项工作。

以下是我的js

中的一些内容
    jQuery.ajax({
            url:        site_url+'/add-student-process',
            type:       'POST',
            data:       form_data,
            dataType:   'json',
            contentType: "application/x-www-form-urlencoded;charset=utf-8",
            cache:      false
            })
    .done(function(resp){               
        if(resp.type === "error"){
            jQuery("#ajax_form_resp").html(resp.value);                                 
        }
        else if(resp.type === "okay"){
            jQuery("#ajax_form_resp").html(resp.value);                                         
        }
    })
    .fail(function(){
        jQuery("#ajax_form_resp").html('Error encountered while processing request. Pls try again shortly.');
    }); 

很高兴得到这方面的帮助。

2 个答案:

答案 0 :(得分:0)

将您从服务器接收的标签通过html传递到dom通常是一个坏主意。就像评论中提到的那样,将原始数据(网址和文本)放入数组并将其发送到客户端会让您更灵活。您仍然需要在javascript中创建链接标记,但您也可以更轻松地将网址和文本列入白名单。

回到问题:你的jquery ajax配置要求响应在json(dataType)中。这意味着响应必须是json格式的字符串。如果你发回原始html它将不太公平。一个肮脏的黑客就是将原始html提供给json_encode并将其发送给客户端。然后它至少会被正确转义。我认为逃避是你的问题。

echo json_encode($raw_html);

答案 1 :(得分:0)

找到了一个帮助解决它的链接。

var text = '&lt;p&gt;name&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:xx-small;"&gt;ajde&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;em&gt;da&lt;/em&gt;&lt;/p&gt;';
var decoded = $('<div/>').html(text).text();
alert(decoded);

Javascript decoding html entities