前台js 脚本
function showDetial(MessageId)
        {
            open();            $.getJSON(
                "RecMessage.aspx?flag=1",
                { meId: MessageId },
                function(json) {
                    $.each(json, function(i) {                        $("#labSendUser").html(json[i].sNickName);                       
                        $("#labtitle").html(json[i].title);
                        $("#labTime").html(json[i].times);
                        $("#labContent").html(json[i].contents);
                        var hid = document.getElementById("meId");
                        hid.value = json[i].id;
                    }
                    );
                }
            );           
        } 后台代码:
protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
        {                Response.ContentType = "text/plain";
                Response.Write(DeleterMes(int.Parse(Request.QueryString["meId"].ToString())));
                Response.End();
     
        }
    }    private string GetMessageById(int id)
    {
        DataTable dt = AccMessageServiceBLL.GetMessageById(id);
        string data = "[";
        for(int i=0;i<dt.Rows.Count;i++)
        {
            data += "{sNickName:\"" + dt.Rows[i]["sNickName"] + "\",title:\"" + dt.Rows[i]["title"] + "\",times:\"" + dt.Rows[i]["sendTime"] + "\",contents:\"" + dt.Rows[i]["message"] + "\",id:\""+dt.Rows[i]["id"]+"\"}";
        }
        
        data += "]";
        return data;
    } 其中dt.Rows[i]["message"]值如果含有Html代码
如("<IMG src=\"http://localhost:3180/stc_Forum/system_dntb/skin/xp/face/qq/001.gif\">") 
前台$.getJSON()方法内无返回值,但是测试后台 data 里值正确return 了。 如果dt.Rows[i]["message"]值中不含html代码则$.getJSON()方法成功获取值,
请问这是什么原因??
在dt.Rows[i]["message"]值中必须含有Html代码,怎样做能够解决含有html代码并且能够正确获取?

谢谢。

解决方案 »

  1.   

    你用jQuery中的ajax试试看,后台代码应该没有什么问题
      

  2.   

    你可以替换"为\"再输出
    string s=dt.Rows[i]["message"].ToString();
    s = s.Replace("\"","\\"");
    然后再data +=输出。
      

  3.   


    赞成,你最好先加个断点调试一下看看dt.Rows[i]["message"]是不是有双引号
      

  4.   

    纠正一下
    string s=dt.Rows[i]["message"].ToString();
     s = s.Replace("\"","\\\"");
      

  5.   

    我看网上说,JSON 返回值中不能包含html,他序列化时就会对html代码处理掉(怎么处理的也没人清楚),
    "\\"斜杠问题没错,我返回值中没包含html代码就没问题,值中一旦包含html代码就$.getJSON()就无返回值,获取不到返回值,但是也不报错。js也调试也调试不到json[i]...  ,如果返回值中不包含html代码不用调试直接alert(json[i]...)就能弹出每一项的值,比较郁闷中。。