[英]Page refresh on submitting form redirecting to another page
我最近使用以下脚本将Web应用程序项目转换为单页应用程序:
function AjaxLoadJQuery(pageToLoad){
var requestObject = new XMLHttpRequest();
requestObject.onreadystatechange = function()
{
if (requestObject.readyState == 4 && requestObject.status == 200)
{
document.open();
document.write(requestObject.responseText);
document.close();
}
if (requestObject.readyState == 4 && requestObject.status == 404)
{
alert('belaj');
}
};
requestObject.open("GET", pageToLoad, true);
requestObject.send();
}
我这样使用它(例如):
<li ><a class="djelatnost" onclick="AjaxLoadJQuery('/servis/Struktura/ostalo.html')">NAŠE USLUGE</a></li>
我将要加载的页面的URL传递给它。
现在,我建立了这样的联系表单:
<div id="contact_container" class="container">
<?php include('C:/wamp/www/servis/Skripte/serverSideValidation.php'); ?>
<div id="contact_div">
<form id="contact_form" name="inputForm" method="post" class="formElements">
Vaše ime<br>
<input type="text" name="Name" id="cf_name"><span id="nameError"><?php if($_SERVER['REQUEST_METHOD'] == 'POST'){ echo "IMA NESTO JBG"; if(validateName($_POST['Name'])) echo "TESTTEST"; } ?></span><br>
Vaša e - mail adresa<br>
<input type="text" id="cf_email" name="Email"><span id="emailError"></span><br>
Vaša opština<br>
<input type="text" name="Opstina" id="cf_opstina"><br>
Vaš grad<br>
<input type="text" name="Grad" id="cf_grad"><br>
Vaš broj telefona<br>
<input type="text" id="cf_brojtel" name="Brojtel"><span id="telefonError"></span><br>
Predmet poruke<br>
<select name="Predmet" id="cf_predmet" onchange="setToValueFromCmbBox()">
<option value="Ponuda">Ponuda</option>
<option value="Kupovina">Kupovina</option>
<option value="Pohvala">Pohvala</option>
<option value="Zalba">Žalba</option>
</select><span id="predmetError"></span><br>
Tip komitenta<br>
<input name="Tip" type="text" id="cf_tip" disabled><span id="tipError"></span><br>
Poruka<br>
<textarea name="Poruka" id="cf_message" >
</textarea><span id="porukaError"></span><br>
<input type="submit" id="submitButton" name="submitButton" value="Pošalji" onclick="validateInput();">
</form>
</div>
</div>
如您所见,在服务器端验证之后,我在输入元素附近使用了一些跨度来表示最终错误(我在客户端使用setCustomValidity())。
问题是当我按下“提交”按钮(关闭了javascript,因此我可以测试.php)时,页面刚刚重新加载,然后转到地址栏中的页面(即索引页面),这意味着一切都已更改。
提交后,我想保留在同一页面上,同时保留上面使用的脚本(对于单页面应用程序)。
实际上,我只是将一个动作设置为直接指向同一页面,现在它可以正常工作了。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.