Phonegap发布数据不能在android设备上工作


phonegap posting data doesn't work on android device

过去两天我一直在使用这个应用程序,我似乎无法解决这个问题。我使用Sam Croft的例子创建表单并将数据发送到mysql。它在浏览器上运行得很好,但在移动设备上就不行了。

这是我的表格

<form id="registerForm">
    <div id="register-thankyou" style="display: none;">
        Thank you.                
    </div>
    <div id="register-form">
        <p class="mandatory" style="color:#A00;font-weight:700;">* indicates Required</p>
        <div data-role="fieldcontain" class="text-field">
            <label for="fullname">Full Name*:</label>
            <input type="text" name="fullname" value="" placeholder="" class="required" id="fullname" />
        </div>
        <div data-role="fieldcontain" class="text-field">
            <label for="email">Email Address*:</label>
            <input type="email" name="email" value="" placeholder="" class="required" id="email"  />
        </div>
        <div data-role="fieldcontain">
            <input type="submit" value="Register !!!" /> 
        </div>
    </div>
</form>

My JavaScript register.js

$('#registerForm').submit(function() {
    var url = 'http://my-domain.com/register.php';
    var postData = $(this).serialize();
    var $fname = $('#fullname').val();
    var $email = $('#email').val();
    if ($fname == "" && $email == "") {
            alert('Please fill in all the fields.');  
    } else {
        //submit the form
        $.ajax({
            type: "POST",
            url: url,
            crossDomain: true,
            cache: false,
            async:true,
            data: postData,
            success: function (data) {
                console.log(data);
                alert(data);
                $('#register-thankyou').show();
                $('#register-form').hide();
            },
            error: function(){
                console.log(data);
                alert('There was an error while registering. Please, Try again later!');
            }
        }); //$.ajax
    }
    return false;
});

My register.php

include 'config.php';
header('Access-Control-Allow-Origin: *');
$con = mysql_connect($dbhost, $dbuser, $dbpass) or die ("Could not connect: " . mysql_error());
mysql_select_db($dbname, $con);
$full_name = mysql_real_escape_string($_POST["fullname"]);
$email = mysql_real_escape_string($_POST["email"]);
$sql = "INSERT INTO register (fullName,email) ";
$sql .= "VALUES ('$full_name', '$email')";
if (!mysql_query($sql, $con)) {
    die('Error: ' . mysql_error());
} else {
    echo "Registered record added";
}
mysql_close($con);

所有我尝试过的

  1. 根据PhoneGap域名白名单指南

  2. 列出我正在使用的所有域名,包括localhost
  3. 添加了对所有起源header('Access-Control-Allow-Origin: *')的支持

  4. 在Ajax调用中设置crossDomain: true

在实现上述所有内容后,我似乎无法通过Android移动设备将数据发布到mysql中。

尝试将javascript更改为不使用序列化方法

$('#submitButton').click(function() {
    var url = 'http://my-domain.com/register.php';
    formData = {
        fullname: $('#fullname').val(),
        email: $('#email').val()
    }
    if ($('#fullname').val() == "" && $('#email').val() == "") {
        alert('Please fill in all the fields.');
    } else {
        //submit the form
        $.ajax({
            type: "POST",
            url: url,
            crossDomain: true,
            cache: false,
            async: true,
            data: formData,
            contentType: 'application/json',
            success: function(data) {
                console.log(data);
                alert(data);
                $('#register-thankyou').show();
                $('#register-form').hide();
            },
            error: function() {
                console.log(data);
                alert('There was an error while registering. Please, Try again later!');
            }
        }); //$.ajax
    }
});

then add submitButton id

html

<input id="submitButton" type="submit" value="Register !!!" />