Javascript 关于使用ajax将表单数据提交到MySQL然后在phonegap中更改页面的一些问题

Javascript 关于使用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

我正在开发一个phonegap应用程序,我正在尝试提交我的注册表单,并通过ajax将数据发送到MySQL,然后在提交后我想弹出一个页面通知用户是否成功。我可以发送数据,并获得一个弹出页面,但似乎我有什么错误,以获得对话框页面将显示在下面

这是我的html

    <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;
}); 
});