我正在开发一个使用HTML5,Css,Javascript的phonegap应用程序,我需要使用Ajax请求将我的项目连接到服务器(我在wamp服务器上使用phpmyadmin数据库)。我在我的ajax请求中使用dataType =“jsonp”解决了CORS问题,但它们仍然不起作用,并且chrome控制台没有显示任何错误。 例如,我的注册表单不会在mydb中插入新记录:
<script type="text/javascript" src="js/jquery-1.11.3.min.js"></script>
<script type="text/javascript" src="js/signup.js"></script>
<form id="regForm" action="" method="post" >
<input type="text" id="name" name="name" placeholder="Name"/>
<input type="text" id="surname" name="surname" placeholder="Surname"/>
<input type="text" id="birthdate" name="birthdate" placeholder="Date of Birth"/>
<input type="text" id="username" name="username" placeholder="Username"/>
<input type="password" id="password" name="password" placeholder="Password"/>
<input type="submit" id="reg-button" name="signup" value="Sign up"/>
<p id="signup-response"></p>
</form>
Ajax请求:
$(document).ready(function(){
$('#regForm').submit(function(){
var form = $(this);
responseMsg = $('#signup-response');
//show response message - waiting
responseMsg.hide()
.addClass('response-waiting')
.text('Please Wait...')
.fadeIn(200);
$.ajax({
url: 'http://localhost/myproject/signup.php',
type: 'POST',
data: form.serialize(),
dataType: 'jsonp',
success:function(data){
//setup variables
var responseData = jQuery.parseJSON(data);
changeClass = '';
//response conditional
switch(responseData.status){
case 'error':
changeClass = 'response-error';
break;
case 'success':
changeClass = 'response-success';
break;
//show reponse message
responseMsg.fadeOut(200,function(){
$(this).removeClass('response-waiting')
.addClass(changeClass)
.text(responseData.message)
.fadeIn(200,function(){
//set timeout to hide response message
setTimeout(function(){
responseMsg.fadeOut(200,function(){
$(this).removeClass(changeClass);
});
},3000);
});
});
}
}
});
return false;
});
});
Signup.php:
<?php
header("Access-Control-Allow-Origin: http://localhost:8000/");
$servername = "localhost";
$username = "root";
$password = "";
$dbname = "mydb";
$conn = mysqli_connect($servername, $username, $password, $dbname);
if (!$conn) {
die("Connection failed: " . mysqli_connect_error());
}
if (isset($_POST['username']) && isset($_POST['password'])){
$nome = $_POST['name'];
$cognome = $_POST['surname'];
$birth = $_POST['birthdate'];
$username = $_POST['username'];
$password = $_POST['password'];
$query = "INSERT INTO user (name, surname, birthdate, username, password)
VALUES ('&name', '&surname', '&birth','&username', '&password')";
$result = mysqli_query($conn, $query);
if($result){
$msg = "User created";
echo "ok";
}else{
echo "Error: " . $sql . "<br>" . mysqli_error($conn);
}
}
mysqli_close();
?>
您能帮我找到解决方案吗?
答案 0 :(得分:0)
当你构建phnegap peoject时,你需要使用10.0.2.2 IP连接你的localhost来自ajax调用
你的ajax ULR中的就是这样的
$.ajax({
url: 'http://10.0.2.2/myproject/signup.php',