我试图通过onsubmit发布从表单中提取的一些数据。即使标题和POST数据看起来很好,POST也会失败(firebug将其显示为失败)。我有很多其他POST工作正常。使用的代码是退出代码的副本,只需进行一些更改(响应函数和调用的php函数)。
我已尝试将要发送的数据减少到最低限度,但仍然失败。我还尝试减少被调用的PHP函数,只是回显一个小字符串,字面上只是一行。
我能看到的唯一区别是这个过程是从onsubmit上的表单调用的。以下是一些代码:
首先是表格(部分内容)
<form id="jmcase" onsubmit=" return FLWG_editSubmit(18)" method="post">
<input id="jmcasename" type="text" size="150" value="Butler v Time [2015] 234" name="jmcasename">
<input type="submit" value="Submit">........
</form>
FLWG_editSubmit 函数调用: -
function FLWG_editSubmit($caseid) {
// Build variables to be posted
var pstv = 'FLWGcaseid='+caseid;
// get lists from form
pstv = pstv+formToPostVars('jmjudge','r,,sdl,tdl,udl');
pstv = pstv+formToPostVars('jmcat','r,,sdl,tdl,udl');
pstv = pstv+formToPostVars('jmcsl','r,,sdl,tdl');
pstv = pstv+formToPostVars('jmsid','r,,sdl,tdl');
pstv = pstv+formToPostVars('jmauth','r,,sdl,tdl');
pstv = pstv+formToPostVars('jmact','r,,sdl,tdl');
**updateCase**(caseid,pstv);
//var obj = newRequestObject();
//obj.onreadystatechange = function() {
// if (obj.readyState == 4) {
// if (obj.status == 200) {
// editCaseReturn(htmlspecialchars_decode(obj.responseText, 'ENT_QUOTES'));
// delete obj;
// obj = null;
// }
// }
//}
//obj.open('POST','include/FLWG_updateCase.php',true);
//obj.setRequestHeader('Accept-Charset','utf-8');
//obj.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
//obj.send("TEST=XXX");`enter code here`
}
功能 updateCase 是已注释掉的代码的另一个版本,它本身就是来自工作POST的副本(虽然这个被称为的经文最后用于发送一个代码段) <失败的数据)。无论如何它在这里:
function updateCase(caseid,pstv) {
var obj = newRequestObject();
obj.onreadystatechange = function() {
if (obj.readyState == 4) {
if (obj.status == 200) {
browseCaseReturn(htmlspecialchars_decode(obj.responseText, 'ENT_QUOTES'));
delete obj;
obj = null;
}
}
}
obj.open('POST','include/FLWG_ucase.php',true);
obj.setRequestHeader('Accept-Charset','utf-8');
obj.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
obj.send(pstv);
}
我刚尝试删除方法=&#34; post&#34;从形式。这导致POST错误414 URI太大(数据可能很大,因为它们是法院案件)所以我认为它默认得到。我把它改回方法=&#34; post&#34;没有414。
我的猜测是,表格可能是POSTing,由于某些原因我的POST失败了,因为表单的POST还没有被处理。如果是这样,那我怎么能停止表单发布(看到更好地使用onsubmit而不是onclick的帖子)。我在这里搜索了不少帖子,但似乎都没有涉及这个问题。我非常确定发送的基础数据没有问题(请求POST显示相应POST变量中的所有预期数据)。
非常感谢任何帮助/建议。
PS这是我的第一篇文章。
答案 0 :(得分:1)
根据评论和使用真实数据检查后答案是防止默认表单提交。按照:
onsubmit="event.preventDefault(); return FLWG_editSubmit(18)"
答案 1 :(得分:0)
如果这是您的确切JS代码,则必须删除函数定义中的$。
function FLWG_editSubmit($caseid) {
// Build variables to be posted
var pstv = 'FLWGcaseid='+caseid;
...
}