2015-04-12 22 views
0

我想通過onsubmit從表單中提取一些數據。即使頭文件和POST數據看起來不錯,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是評論的另一個版本out代碼,這本身就是工作POST的一個副本(一個,雖然被讚美的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錯誤414 URI太大(數據可能很大,因爲它們是法院案件),所以我認爲它默認得到。我改回它method =「後」,並沒有414.

我的猜測是,也許形式是發佈,由於某種原因,我的POST失敗,因爲表單的POST沒有處理。如果是這樣,那麼我怎樣才能停止表單發佈(看到更好地使用onsubmit而不是onclick)的帖子。我在這裏搜索了很多帖子,但沒有看到這個問題。我很確定發送的底層數據沒有問題(請求POST顯示各個POST變量中的所有預期數據)。

任何援助/建議將不勝感激。

PS這是我的第一篇文章。

+0

我剛纔看到,如果你右擊POST請求(螢火蟲),您可以重新發送請求。我在失敗的請求上嘗試了這一點,並且請求起作用。所以它似乎確實存在一個衝突或許是失敗背後的時機。 – 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,我已經刪除了,但雙重檢查,它不在那裏(不知道如何進來)。說我回答了我的答案(我認爲)。這就是在onsubmit中包含'event.preventDefault();'。即'onsubmit =「事件。的preventDefault();返回FLWG_editSubmit(18)「'我只需要檢查我現在想要的實際代碼。 – MikeT

相關問題