我想将表单中的每个数据发送到外部php文件并更新数据库值。似乎没有任何反应。控制台不显示任何错误。我已经搜索了回复,似乎没有任何对我有用。
$(document).ready(function(){
$('#updatesettings').submit(function(e) {
e.preventDefault();
var lang = $(this).find('.dropdown-toggle').text();
console.log('lang=' + lang +'&'+ $(this).serialize());
$.ajax({
type: "POST",
url: "modules/game/updatesettings.php",
data: 'lang='+lang+'&'+$(this).serialize(),
}).done(function(data){
console.log(data);
})
.fail(function(error){
console.log(error);
});
;
});
});
<form id="updatesettings" method="post">
<p>
<label for="link">LINK</label>
<input type="text" name="link" class="textbox" id="link" value="<?php echo $tlink;?>" placeholder="LINK"> <?php if($tlink != "") echo'<i class="fa fa-check green"></i>'; else echo'<i class="fa fa-times red"></i>';?>
</p>
<p>
<label for="email">EMAIL</label>
<input type="text" name="email" class="textbox" id="email" value="<?php echo $email; ?>" placeholder="E-MAIL"><?php if($email != "") echo' <i class="fa fa-check green"></i>'; else echo' <i class="fa fa-times red"></i>';?>
</p>
<div class="btn-group">
<a class="btn dropdown-toggle btn-select" data-toggle="dropdown" href="#"><?php echo $langset; ?> <span class="caret"></span></a>
<ul class="dropdown-menu">
<li><a href="#"><span class="flag flag-usa flag-1x"></span> English</a></li>
<li><a href="#"><span class="flag flag-rou flag-1x"></span> Romana</a></li>
</ul>
</div>
<p><input type="submit" class="button" href="#" value="Save settings"></p>
</form>
我尝试用于更新的外部php文件就是这个。
<?php
@include_once('modules/connections/dbconn.php');
$link = $_POST["link"];
$link = mysql_real_escape_string($link);
$email = $_POST["email"];
$email = mysql_real_escape_string($email);
$id = $_SESSION["id"];
$lang = $_POST["lang"]
if($lang=="English"){
$lang="en";
}
else {
$lang="ro";
}
mysqli_query($GLOBALS['connect'],"UPDATE users SET `link`='$link' WHERE `id`='$id'");
mysqli_query($GLOBALS['connect'],"UPDATE users SET `email`='$email' WHERE `id`='$id'");
mysqli_query($GLOBALS['connect'],"UPDATE users SET `lang`='$lang' WHERE `id`='$id'");
exit;
?>
非常感谢您提供帮助!
答案 0 :(得分:0)
如果成功(完成)或错误(失败),您不会处理结果。尝试:
$.ajax({
type: "POST",
url: "updatesettings.php",
data: 'lang='+lang+'&'+$(this).serialize(),
})
.done(function(data){
console.log(data);
})
.fail(function(error){
console.log(error);
});
完成()会在您的请求正确时调用,失败()会在出现错误时调用。
提示:按 f12 并转到网络标签查看您的请求。
检查this pen
答案 1 :(得分:0)
您的代码中存在两个问题。首先,你建立的查询字符串是错误的。您需要在&
值和序列化表单数据的其余部分之间添加lang
。其次,DOM遍历以获取.dropdown-toggle
文本是不正确的。 this
会引用form
元素,因此您需要使用find()
来处理DOM,而不是parents()
才能使用它。
还值得添加success
和error
处理程序,至少有助于调试。试试这个:
$('#updatesettings').submit(function(e) {
e.preventDefault();
var lang = $(this).find('.btn-group .dropdown-toggle').text();
$.ajax({
type: "POST",
url: "updatesettings.php",
data: 'lang=' + lang + '&' + $(this).serialize(),
success: function() {
console.log('it worked!');
},
error: function(x, s, e) {
console.log('it failed');
console.log(x, s, e);
}
});
});