app上的form跳轉(zhuǎn)

app上的form跳轉(zhuǎn)

起原: 當(dāng)時(shí)因?yàn)槭菧y(cè)試銀聯(lián)百科,證書是測(cè)試證書,所以沒(méi)有在app中走流程,在手機(jī)瀏覽器端走的流程,當(dāng)流程一切都o(jì)k的時(shí)候,正式的證書也下來(lái)的,我們滿心歡喜的在app上走一遍,本感覺(jué)已經(jīng)萬(wàn)事大吉了,沒(méi)想到在ios中出現(xiàn)了問(wèn)題,在安卓中一切都好 程序流程: 當(dāng)用戶輸入金額后,選擇銀聯(lián),點(diǎn)擊充值,前端會(huì)調(diào)后臺(tái)的接口,成功后,后臺(tái)返回一個(gè)html, (html是銀聯(lián)那邊返回的,我們無(wú)權(quán)修改) 前端這邊解析html,拿到form表單,將form表單放入當(dāng)時(shí)頁(yè)面中body的**部,提交表單,提交方式是post。 問(wèn)題: ios中跳轉(zhuǎn)銀聯(lián)的時(shí)候,會(huì)報(bào)501的錯(cuò)誤,安卓沒(méi)有問(wèn)題 過(guò)程: 報(bào)501錯(cuò)誤,立馬問(wèn)了下**,**人員說(shuō),501是因?yàn)樘峤坏姆绞讲粚?duì),是get提交,應(yīng)該是post提交, 本以為是不是ios這里修改了提交的方式,和ios人員溝通后,ios人員說(shuō)沒(méi)有修改過(guò); 又以為是ios原生會(huì)修改form提交方式,又用ios原生瀏覽器測(cè)了下,沒(méi)有問(wèn)題,與ios人員再次溝通后,雙方從自己的角度去看看有沒(méi)有辦法去解決這個(gè)問(wèn)題; 由是想,前端這里能不能把form提交修改成ajax的提交方式,我們這里把form拆解,將接口用ajax的方式提交,但是發(fā)生了跨域問(wèn)題,因?yàn)槭莗ost方式,需要后臺(tái)做相關(guān)處理,但是后臺(tái)是銀聯(lián)那里的,不會(huì)因?yàn)槲覀冞@里去修改東西;ios那里也沒(méi)有解決掉; 時(shí)間已經(jīng)不早了,我們各自先回,待明日再戰(zhàn)。

晚上難以入眠,一直再想這個(gè)問(wèn)題,為什么會(huì)這樣!!為什么 忽然靈光乍現(xiàn),想到是不是因?yàn)閕os在這里新開頁(yè)面的問(wèn)題, (因?yàn)閕os打開web前端頁(yè)面是新開,而安卓是在當(dāng)前頁(yè)面打開) form提交,ios會(huì)打開新的頁(yè)面,這樣就是get提交,所以會(huì)報(bào)501。

請(qǐng)問(wèn)為什么表單提交,在表單中沒(méi)有填寫數(shù)據(jù),點(diǎn)擊提交也會(huì)跳轉(zhuǎn)

要在 form 沒(méi)有數(shù)據(jù)的時(shí)候禁止跳轉(zhuǎn),可以使用表單的 onsubmit 事件在提交時(shí)檢測(cè) form 表單中的內(nèi)容是否是你想要的內(nèi)容,以下是簡(jiǎn)單示例
<!DOCTYPE?html><html?lang=\”zh-CN\”>?<head>?<meta?charset=\”utf-8\”>?<title>Form?校驗(yàn)</title>?<script>?function?CheckForm(form)?{?if(form.username.value?==?\”\”)?{?alert(\’名字總要填一個(gè)吧!\’);?form.username.focus();?return?false?}?return?true;?}?</script>?</head>?<body>?<form?name=\”form1\”?id=\”form1\”?action=\”\”?method=\”post\”?onsubmit=\”CheckForm(this)\”>?<input?type=\”text\”?name=\”username\”>?<input?type=\”submit\”?value=\”?提交\”>?</form>?</body></html>

html的form提交之后,是如何進(jìn)行跳轉(zhuǎn)的?整個(gè)過(guò)程瀏覽器是如何實(shí)現(xiàn)的?

form表單的action 與url跳轉(zhuǎn)是不一樣的: form表單可以給后臺(tái)傳遞數(shù)據(jù),在后臺(tái)直接可以用request對(duì)象去向前臺(tái)請(qǐng)求數(shù)據(jù)。 form表單傳遞數(shù)據(jù)有兩種方式: method=\”post\”:這是傳遞大量數(shù)據(jù)時(shí)用的,在數(shù)據(jù)傳遞之前會(huì)先將數(shù)據(jù)打包,因此這種傳遞數(shù)據(jù)的方式會(huì)效率會(huì)比較慢,但是穿過(guò)的數(shù)據(jù)都能正確解析,因此傳中文不會(huì)有亂碼。

method=\”get\”:以URL傳遞的,因?yàn)榈刂窓陂L(zhǎng)度有限,所以對(duì)數(shù)據(jù)量是有限制的,而且傳遞的數(shù)據(jù)必須是ASCCI碼值范圍內(nèi)的,因此,傳中文會(huì)有亂碼,需特殊處理。

html form提交的地址為什么不是action里面那個(gè)地址,而是跳轉(zhuǎn)到首頁(yè)?

for

asp.net中為什么我提交Form表單 還是跳轉(zhuǎn)到本頁(yè)呢 ?

你沒(méi)有提交按鈕,所以并沒(méi)有提交 ,改成這樣再試試:<form name=\”alipayment\” method=\”post\” runat=\”server\” target=\”_blank\” action=\”alipayto.aspx\”> <input type=\”image\” src=\”IMG/button_sure.gif\” value=\”確認(rèn)訂單\” name=\”nextstep\” onclick=\”submit()\” /></form>