【发布时间】:2020-04-06 15:25:59
【问题描述】:
我有一个 HTML 表单作为 java 的输出,它从数据库中获取文本并用它填充该表单的输入。在表单中,我可以编辑提交时的文本 通过 jquery AJAX 调用发送回 java。通过java将文本保存在数据库中。
如果我在文本区域输入test%,它将在服务器端以test% 出现。
假设HTML 表单如下所示:
<form id="form_used_0" action="#" method="post" onclick="hideAjaxList();">
<textarea name="summary" id=" summary " data-mini="true"><%=HtmlWriter.preformat(summary)%></textarea>
<a id="saveBtn" class="actionBtn" href="#" data-theme="b" onclick="onSave (this);">Save</a>
</form>
在 saveBtn 点击此 AJAX 调用:
function onSave(thisHref)
{
var respData = "";
var id = $("#id").attr("value");
var params = $("#form_used").serialize()+"&ajaxAction=SaveHeader"+"&id="+id;
$.post(ajaxURL, params, function(data){
if(data.length >0)
{
respData = data.substring(data.indexOf("|")+1, data.lastIndexOf("|"));
}
}).complete(function(){
if (respData.length > 0)
{
var responseData = respData.split("|");
var status = responseData[0];
var msg = responseData[1];
if (status == 'SUCCESS')
{
showSuccessMsgHeader(msg);
}
else if (status == 'ERROR')
{
showErrorMsgsOnly(msg);
}
}
});
}
我尝试使用serializeArray 方法,但现在得到400 Bad request error。我检查了网络选项卡中的form data,发现它在输入字段旁边显示为unable to decode value。
function onSave(thisHref)
{
var respData = "";
var id = $("#id").attr("value");
var x = $("#form_used_0").serializeArray();
var paramsArr = "";
$.each(x, function(i, field){
if(i == x.length - 1){
paramsArr = paramsArr + field.name + "=" + field.value;
} else {
paramsArr = paramsArr + field.name + "=" + field.value + "&";
}
});
var params paramsArr +"&ajaxAction=SaveHeader"+"&id="+id;
$.post(ajaxURL, params, function(data){
if(data.length >0)
{
respData = data.substring(data.indexOf("|")+1, data.lastIndexOf("|"));
}
}).complete(function(){
if (respData.length > 0)
{
var responseData = respData.split("|");
var status = responseData[0];
var msg = responseData[1];
if (status == 'SUCCESS')
{
showSuccessMsgHeader(msg);
}
else if (status == 'ERROR')
{
showErrorMsgsOnly(msg);
}
}
});
}
任何人都可以帮助我吗?
【问题讨论】:
-
.serialize() 方法以标准 URL 编码表示法创建文本字符串。 查看更多:api.jquery.com/serialize 使用
%时会出现这种情况。您只需要将其从 HTML 实体转换回 ASCII 字符。 -
感谢@Twisty。你能告诉我我到底需要在哪里做,我该怎么做。
-
这将在服务器上完成。
标签: javascript jquery ajax jquery-ui ajaxform