2015-04-12 2 views
0

Я пытаюсь 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 Это мой первый пост.

+0

Я только что видел, что если вы щелкните правой кнопкой мыши запрос POST (в Firebug), что вы можете повторно отправить запрос. Я попробовал это при неудавшемся запросе, и запрос работал. Таким образом, кажется, что существует конфликт, возможно, время, которое стоит за неудачей. – MikeT

ответ

0

В соответствии с комментарием и после проверки с реальными данными ответа заключается в том, чтобы предотвратить подачу в формы по умолчанию. в соответствии с:

onsubmit="event.preventDefault(); return FLWG_editSubmit(18)" 

Answered obtained from here

0

Если это ваш точный код JS, вам придется удалить $ в определении функции.

function FLWG_editSubmit($caseid) { 
 

 
// Build variables to be posted 
 
    var pstv = 'FLWGcaseid='+caseid; 
 

 
    ... 
 

 
}

+0

@JRemmenud, я удалил это, но дважды проверил, и его там нет (не знаю, как это получилось). Говоря, что я пришел к ответу (я думаю). и это должно включать 'event.preventDefault();' в onsubmit. т.е. событие onsubmit =.preventDefault(); return FLWG_editSubmit (18) ". Мне просто нужно проверить фактический код, который я хочу сейчас. – MikeT