Phonegap项目可以';t连接到服务器-Cors


Phonegap project can't connect to server - Cors

我正在使用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;
    });
});

注册.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();
?>

你能帮我找到解决办法吗?

当您构建phnegap-peoject 时,需要使用10.0.2.2 IP从ajax调用连接本地主机

在您的ajax ULR中,喜欢这个

$.ajax({
        url: 'http://10.0.2.2/myproject/signup.php',