Я пытаюсь POST некоторые данные, извлеченные из формы через onsubmit. POST не работает (firebug показывает его как сбой), даже если заголовки и данные POST выглядят отлично. У меня есть много других полезных функций POST. Используемый код представляет собой копию выходного кода только с несколькими изменениями (функция ответа и вызванная функция php).javascript post не работает другие работают отлично - связанная с формой
Я попытался свести данные к минимуму, но все равно не удается. Я также попытался уменьшить вызванную функцию 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 (, хотя commeneted verson в последний раз использовался для отправки только фрагмента данных, который также не удался). Здесь все равно:
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);
}
Я только что попробовал удалить метод = "post" из формы. Это привело к тому, что ошибка POST 414 URI была слишком большой (данные могут быть большими, поскольку они являются судебными делами), поэтому я предполагаю, что он по умолчанию получил. Я изменил его на метод = «пост» и нет 414.
Я предполагаю, что, возможно, форма POSTING и по какой-то причине мой POST не работает, потому что POST формы не обрабатывается. Если да, то как я могу остановить публикацию формы (пильные записи, которые говорят лучше использовать onsubmit, а не onclick). Я просмотрел здесь несколько сообщений, но, похоже, никто не оспаривает эту проблему. Я совершенно уверен, что нет никаких проблем с отправкой базовых данных (POST запроса показывает все ожидаемые данные в соответствующих переменных POST).
Любая помощь/совет будут очень признательны.
PS Это мой первый пост.
Я только что видел, что если вы щелкните правой кнопкой мыши запрос POST (в Firebug), что вы можете повторно отправить запрос. Я попробовал это при неудавшемся запросе, и запрос работал. Таким образом, кажется, что существует конфликт, возможно, время, которое стоит за неудачей. – MikeT