Javascript 关于使用ajax将表单数据提交到MySQL然后在phonegap中更改页面的一些问题
我正在开发一个phonegap应用程序,我正在尝试提交我的注册表单,并通过ajax将数据发送到MySQL,然后在提交后我想弹出一个页面通知用户是否成功。我可以发送数据,并获得一个弹出页面,但似乎我有什么错误,以获得对话框页面将显示在下面 这是我的htmlJavascript 关于使用ajax将表单数据提交到MySQL然后在phonegap中更改页面的一些问题,javascript,php,mysql,jquery-mobile,cordova,Javascript,Php,Mysql,Jquery Mobile,Cordova,我正在开发一个phonegap应用程序,我正在尝试提交我的注册表单,并通过ajax将数据发送到MySQL,然后在提交后我想弹出一个页面通知用户是否成功。我可以发送数据,并获得一个弹出页面,但似乎我有什么错误,以获得对话框页面将显示在下面 这是我的html <html> <head> <meta charset="utf-8" /> <meta name="format-detection" content="teleph
<html>
<head>
<meta charset="utf-8" />
<meta name="format-detection" content="telephone=no" />
<meta name="viewport" content="user-scalable=no, initial-scale=1, maximum-scale=1, minimum-scale=1, width=device-width, height=device-height
<link some css here….>
<script src="js/jquery-1.10.2.js" ></script>
<script src="js/jquery.mobile-1.4.0.js" ></script>
<script type="text/javascript" src="js/jquery.validate.js"></script>
<script src="js/signup.js"></script>
<script>
function onBodyLoad(){
document.addEventListener("deviceready",onDeviceReady,false);
}
</script>
<title>DTSB System</title>
</head>
这是我的js文件
$(document).on("pageshow", "#signuppage", function() {
$.validator.addMethod("passmatch", function(value) {
return value == $("#fpasswd2").val();
}, 'Confirmation password must match.');
});
$(document).ready(function(){
$('#signupform').validate();
$('#signupform').submit(function(event){
event.preventDefault();
var formData = $(this).serialize();
$.ajax({
type:'POST',
data: formData,
url:'http://localhost/doctor/insert_info.php',
cache: false ,
success: function(){
$.mobile.changePage("#dialogY");
}
error: function(){
$.mobile.changePage("#dialogN");
}
});
return false;
});
});
我已经尝试了很多方法,但我仍然无法获得对话框页面,似乎我无法获得成功反馈,即使我提交了正确的数据。当我在emulator中运行这些代码时,它可以工作,但在safari上它失败了。我的代码有问题吗?所有的资产都是从“localhost”(我在ajax调用中看到的)提供的吗?如果不是,Safari可能会因为以下原因而失败 只需确保您将所有资源指向同一主机名即可
当您在Safari中打开错误报告时,您在控制台中看到了什么吗?控制台说无法加载XMLHttpRequest。访问控制允许原点不允许原点为null。但是在config.xml中,我更改了..?谢谢您的提醒,我检查了我的代码并添加了标题('Access-Contorl-Allow-Origin:')在我的php文件中,我解决了这个问题!我感谢你的回答。:-)很高兴你解决了这个问题。从安全角度来看,最好按照我的建议对所有请求使用同一个域,而不是放松php头的安全性。修改ajax以省略域是否有效,例如:url:'/doctor/insert_info.php'省略域工作,然后页面不再工作,我将我的php文件放在xampp htdocs目录中,将html、js、css放在phonegap项目目录中。这太奇怪了,在我添加标题后,我只能获得dialogY页面,但无法获得dialogN页面,你知道吗?
$username=mysql_real_escape_string($_POST['fusername2']);
$password=sha1($_POST['fpasswd2']);
$email=mysql_real_escape_string($_POST['femail']);
$sql = "INSERT INTO users (user_name, user_pass, user_email)";
$sql .= "VALUES('$username','$password','$email')";
$exist = "SELECT * FROM users WHERE user_name= '". $username . "'";
$query_result = mysql_query($exist, $con);
if(mysql_num_rows($query_result) == 0) {
if(isset($username)&& isset($password) && isset($email)){
if(mysql_query($sql, $con)){
echo "Insert success!";
}else{
die ('Error: ' . mysql_error());
}
}else{
die ('Error: There are empty fields needed to be filled' . mysql_error());
}
}else{
die ('Error: User already exist' . mysql_error());
}
mysql_close($con);
?>
$(document).on("pageshow", "#signuppage", function() {
$.validator.addMethod("passmatch", function(value) {
return value == $("#fpasswd2").val();
}, 'Confirmation password must match.');
});
$(document).ready(function(){
$('#signupform').validate();
$('#signupform').submit(function(event){
event.preventDefault();
var formData = $(this).serialize();
$.ajax({
type:'POST',
data: formData,
url:'http://localhost/doctor/insert_info.php',
cache: false ,
success: function(){
$.mobile.changePage("#dialogY");
}
error: function(){
$.mobile.changePage("#dialogN");
}
});
return false;
});
});