jquery ajax 返回的html字符串 解析乱码问题

wl59138528 2011-11-08 10:44:17
想做的效果如:51job中简历的动态添加工作经验。
问题:
能实现效果,但是返回result有两个按钮解析的不对。

将:<a style='cursor:pointer;' onclick='deleteinfo('Record','add','2')'>删除</a>
解析成了:<a record','add','2')'="" onclick="deleteinfo(" style="cursor:pointer;">删除</a>
将:<img style='cursor: pointer' onclick='Record_save('record_form_add_2')' src='/images/stock/btn_save1.gif'>
解析成了:<img src="/images/stock/btn_save1.gif" record_form_add_2')'="" onclick="Record_save(" style="cursor: pointer">

我的js:
var Created = 0;
var allowPrompt = true;
var Submited = 0;
var Returned = 0;

function showinfo(info_id)
{
$("#" + info_id + "_info").toggle();
$("#" + info_id + "_show").toggle();
$("#" + info_id + "_hidden").toggle();
}

function addinfo(info_id)
{
var info_num = $("#" + info_id + "_num").val();//取得表单id
info_num++;
$("#" + info_id + "_num").val(info_num);//设置表单id+1

$.get("/control/main/InvestorControl!"+info_id+".action",
{ NextAction: "edit", info_num: info_num, show_num: info_num,investorid: $("#investorid").val()} , function(result) {$("#" + info_id + "_edit").append(eval(result)); });

}
Struts2_action:
public String Record() throws IOException {

result="<div id='Record_add_"+this.info_num+"'>" +
"<form name='Record_form_add_"+this.info_num+
"' method='POST' id='Record_form_add_"+this.info_num+
"' action='InvestorControl!addRecord'>" +
"<table><tbody><tr><td>通话记录</td><td><img src='/images/stock/icon_del.gif' align='absmiddle' hspace='3'>" +
"<a style='cursor:pointer;' onclick='deleteinfo('Record','add','"+this.info_num+"')'>删除</a>"+
"</td></tr><tr><td colspan='2'><textarea rows='8' cols='60'></textarea></td></tr><tr></tr></tbody></table><p>"+
"<img style='cursor: pointer' onclick='Record_save('record_form_add_"+this.info_num+"')' src='/images/stock/btn_save1.gif'></p></form></div>";

return SUCCESS;

}
我的struts.xml:
<!-- 客户管理 -->
<package name="ajax" extends="json-default">
<action name="InvestorControl" class="com.redant.web.action.investor.InvestorControlAction">
<!-- 返回类型为json 在json-default中定义 -->
<result type="json">
<!-- root的值对应要返回的值的属性 -->
<!-- 这里的result值即是 对应action中的 result -->
<param name="root">result</param>
</result>
</action>
</package>
我的jsp片段:
<div id="Record_info">
<div id="Record_edit">
<div id="Record_add_1">
<form name="Record_form_add_1" method="POST" id="Record_form_add_1" action="InvestorManage!addRecord">
<table>

<tbody>
<tr>
<td>通话记录</td>
<td><img src="/images/stock/icon_del.gif" align="absmiddle" hspace="3">
<a onclick="deleteinfo('Record','add','1')" style="cursor: pointer;">删除</a> </td>
</tr>
<tr>
<td colspan="2">
<textarea rows="8" cols="60"></textarea>
</td>
</tr>
<tr>

</tr>
</tbody>
</table>
<p><img src="/images/stock/btn_save1.gif" onclick="Record_save('Record_form_add_1');" style="cursor: pointer;"></p>
</form>
</div>
</div>
<table class="rew_con_paragraph" border="0" cellpadding="0" cellspacing="0">
<tbody><tr>
<td><img src="../../../images/stock/btn_addcontinue.gif" onclick="addinfo('Record');" style="cursor: pointer;" id="Record_add" hspace="5" vspace="10">继续添加</td>
</tr>
</tbody></table>
<input type="hidden" id="Record_num" value="1"/>
<input type="hidden" id="investorid" name="investorid" value="999"/>
</div>

问题:
能实现效果,但是返回result有两个按钮解析的不对。
将:<a style='cursor:pointer;' onclick='deleteinfo('Record','add','2')'>删除</a>
解析成了:<a record','add','2')'="" onclick="deleteinfo(" style="cursor:pointer;">删除</a>
将:<img style='cursor: pointer' onclick='Record_save('record_form_add_2')' src='/images/stock/btn_save1.gif'>
解析成了:<img src="/images/stock/btn_save1.gif" record_form_add_2')'="" onclick="Record_save(" style="cursor: pointer">
...全文
1160 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
wl59138528 2011-11-12
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 zhu6100441 的回复:]

不好意思,代码太多了,有点乱,所以没注意到你的action。
给你重新提供一个使用juery的ajax方法吧。
Java code

public void Record() throws IOException {
String result="这里组装你要的页面";
response.setHeader("Cache-Control", "……
[/Quote]谢谢问题已经解决,你的办法会更简便些,但针对这个问题,gongxu6688的办法可行。谢谢
LoongMint 2011-11-09
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 wl59138528 的回复:]
引用 1 楼 jushi1988 的回复:

result="<div id='Record_add_"+this.info_num+"'>" +
"<form name='Record_form_add_"+this.info_num+
"' method='POST' id='Record_form_add_"+this.info_num+
"' action='InvestorCo……
[/Quote]
页面出现乱码是中文乱码 还是页面的样式串了. 中文乱码可以采用9楼的方式处理。但是你处理的html字符串写法真都有问题。单双引号引起的页面样式串了,比如input没有> 是半个input 页面就会串。
jim-single 2011-11-09
  • 打赏
  • 举报
回复
页面和 和后台的太编码一样吗?    
zhu6100441 2011-11-09
  • 打赏
  • 举报
回复
不好意思,代码太多了,有点乱,所以没注意到你的action。
给你重新提供一个使用juery的ajax方法吧。

public void Record() throws IOException {
String result="这里组装你要的页面";
response.setHeader("Cache-Control", "no-cache");
response.setContentType("text/json;charset=UTF-8");
response.getWriter().write(result);
}


使用这种形式,你可以随心所欲的返回你要的数据,而不必担心格式,编码问题。
至于你之前的方法,可能是在解析"cursor:"这里的时候发生了错误,jquery把你要解析的result当作了json数据,所以就按照了json的格式把你返回的result解析到了页面上。
啊道 2011-11-09
  • 打赏
  • 举报
回复
不知道..看什么...晕 新手..
gongxu6688 2011-11-09
  • 打赏
  • 举报
回复
Struts2_action:
public String Record() throws IOException {

result="<div id='Record_add_"+this.info_num+"'>" +
"<form name='Record_form_add_"+this.info_num+
"' method='POST' id='Record_form_add_"+this.info_num+
"' action='InvestorControl!addRecord'>" +
"<table><tbody><tr><td>通话记录</td><td><img src='/images/stock/icon_del.gif' align='absmiddle' hspace='3'>" +
"<a style='cursor:pointer;' onclick='deleteinfo('Record','add','"+this.info_num+"')'>删除</a>"+
"</td></tr><tr><td colspan='2'><textarea rows='8' cols='60'></textarea></td></tr><tr></tr></tbody></table><p>"+
"<img style='cursor: pointer' onclick='Record_save('record_form_add_"+this.info_num+"')' src='/images/stock/btn_save1.gif'></p></form></div>";

return SUCCESS;

}


请将代码那个‘单引号换成“引号!
如下:
= "<div id='Record_add_"+x+"'>" +
"<form name='Record_form_add_"+y+
"' method='POST' id='Record_form_add_"+z+
"' action='InvestorControl!addRecord'>" +
"<table><tbody><tr><td>通话记录</td><td><img src='/images/stock/icon_del.gif' align='absmiddle' hspace='3'>" +
"<a style=\"cursor:pointer;\" onclick=\"deleteinfo('Record','add','"+z+"')\">删除</a>"+
"</td></tr><tr><td colspan='2'><textarea rows='8' cols='60'></textarea></td></tr><tr></tr></tbody></table><p>"+
"<img style=\"cursor:pointer;\" onclick=\"Record_save('record_form_add_"+z+"')\" src='/images/stock/btn_save1.gif'></p></form></div>";

wl59138528 2011-11-09
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 zhu6100441 的回复:]

把action弄出来看看呢,我怀疑你是在方法里面把位置就写错了。
[/Quote]感谢您的回复,action 已经在上面了。谢谢
zhu6100441 2011-11-09
  • 打赏
  • 举报
回复
把action弄出来看看呢,我怀疑你是在方法里面把位置就写错了。
  • 打赏
  • 举报
回复
我就不参合了 看着头晕。。。也不想跟着 1L 去说。。。就帮顶了
wl59138528 2011-11-09
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 jushi1988 的回复:]

result="<div id='Record_add_"+this.info_num+"'>" +
"<form name='Record_form_add_"+this.info_num+
"' method='POST' id='Record_form_add_"+this.info_num+
"' action='InvestorControl!addRecord'>" +
"<……
[/Quote]这位大哥感谢您的回答,我result中的内容是从服务器端返回来的,但是在客户端解析的时候出现了乱码。
LoongMint 2011-11-09
  • 打赏
  • 举报
回复
result="<div id='Record_add_"+this.info_num+"'>" +
"<form name='Record_form_add_"+this.info_num+
"' method='POST' id='Record_form_add_"+this.info_num+
"' action='InvestorControl!addRecord'>" +
"<table><tbody><tr><td>通话记录</td><td><img src='/images/stock/icon_del.gif' align='absmiddle' hspace='3'>" +
"<a style='cursor:pointer;' onclick='deleteinfo('Record','add','"+this.info_num+"')'>删除</a>"+
"</td></tr><tr><td colspan='2'><textarea rows='8' cols='60'></textarea></td></tr><tr></tr></tbody></table><p>"+
"<img style='cursor: pointer' onclick='Record_save('record_form_add_"+this.info_num+"')' src='/images/stock/btn_save1.gif'></p></form></div>";

楼主你这种写法不对吧。应该是最外层用单引号,里面的遇到单引号用转义就行\"。遇到双引号就"。而且你的js方法里用了两个单引号,明显会错的啊。
应该这么写:var a = '<a onclick="deleteinfo(\"Record\",\"add\",\""+this.info_num+"\");">删除</a>';

81,094

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧