[英]Form reloading page without sending the data on submit
這是我的代碼。
在我的.js文件中:
function Sendit()
{
bValidate = validateField();
if(bValidate)
{
var title = $("#title").val();
theUrl = 'index.php';
params = '';
params += 'action=Send';
params += '&title='+title;
$.ajax ({
url: theUrl,
data: params,
async:true,
success: function (data, textStatus)
{
//do smth
alert('went well');
}
,
error: function(jqXHR, textStatus, errorThrown)
{
alert(errorThrown);
}
});
}
}
function validateField()
{
var title = document.getElementById('title').value;
if(!title.match(/\S/))
{
//do some alerting
return false;
}
else
{
return true;
}
}
在我的index.php文件中:
<form action="" method="post" name="myform" id="myform"" >
Title: <input class="" type="text" name="title" value="" id="title"/> <br>
<input type="submit" value="Submit" onClick="javascript:Sendit();return false; ">
</form>
<?php
if ($_REQUEST["action"]=='Send')
{
$title = $_REQUEST["title"];
$sql = "INSERT INTO ...
$retval = $mysqli->query($sql, $conn);
if(! $retval ) {
echo('Could not enter data insert: ' . mysql_error());
}
else
{
//inform that everything went well
}
?>
單擊sunmit按鈕時,這不會發送任何內容。 實際上,您可以單擊按鈕直到當天結束時沒有任何反應(甚至調試器中的消息都沒有)
如果我刪除了return false;
從按鈕上的onClick
,我點擊按鈕,頁面重新加載,甚至沒有填寫必須填寫的標題輸入。
Ajax的成功並沒有提醒一件事情,在這兩種情況下,我的數據庫中都沒有插入任何內容。
插入查詢是正確的,我已經檢查過了。
有關如何發送數據和驗證的任何想法?
謝謝
您的validateField()
函數永遠不會返回true,因此您的if(bValidate)
將永遠不會運行。 Javascript函數返回undefined,除非你明確地返回一些東西,試試這個:
function validateField()
{
var title = document.getElementById('title').value;
if(!title.match(/\S/))
{
//do some alerting
return false;
} esle {
return true;
}
}
使用以下代碼發送req。
function Sendit()
{
bValidate = validateField();
if(bValidate)
{
var title = $("#title").val();
theUrl = 'index.php';
params = {};
params["action"] = 'Send';
params["title"] = title;
$.ajax ({
url: theUrl,
data: params,
async:true,
success: function (data, textStatus)
{
//do smth
alert('went well');
}
,
error: function(jqXHR, textStatus, errorThrown)
{
alert(errorThrown);
}
});
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.