Ajax在jQueryMobile和Phonegap,JSON对象中本地调用

时间:2014-02-16 17:14:57

标签: ajax json jquery-mobile cordova

我有非常简单的jQueryMobile应用程序。我想提交一份表格并致电ajax。在我的台式电脑上,这很好用,看起来像这样:

application on my PC

当我按下“保存”按钮时,下面的文字会出现。界面的HTML代码位于脚本accountAdd.html中。在我的电脑它按预期工作,但我需要这个应用程序的移动设备。这是我的设备截图,当我尝试做第一个数字时显示的相同的事情。

application on my mobile device

所以这是脚本中调用ajax的部分。

accountAdd.html

<script>
    $( document ).ready(function() {
         $(document).on('submit', '#formDetails', function() { 
         var theName = $("#accountName").val();
         if($('#accountName').val().length > 0) {                   
              $.ajax({
                   url: 'accountAdd.php',
                   data: $('#formDetails').serialize(),
                   type: 'post',                   
                   dataType: 'json',
                   timeout: 5000,   
                   success: function (result, status) {                             
                                $("#resultLog").html("accountName: " + result.accountName);                             
                            },
                   error: function (request,error) {                                
                                alert('Network error has occurred please try again! Error: ' + error);                              
                            }
              });                  
         } else {
             alert('Please fill all necessary fields');
         }           
         return false; 
         });    
    });
</script>
.
.
.
HTML code

这是我的另一个脚本,其中包含在后端执行的代码。

accountAdd.php

<?php 
header('Access-Control-Allow-Origin: *');  

$return['accountName'] = $_POST['accountName'];
$return['accountType'] = $_POST['accountType'];
$return['accountBalance'] = $_POST['accountBalance'];
$return['accountDate'] = $_POST['accountDate'];

echo json_encode($return);
?>

所以我的移动设备上的ajax调用没有按预期工作,正如你在第二个数字中看到的那样是给出 parseerror 。两个设备的代码完全相同。我正在使用phonegap转换脚本。我认为问题与JSON对象有关(我认为在phonegap中的ajax调用需要传递JSON对象,但我不确定)。我需要帮助,如何修改代码,以便可以在PC和我的移动设备上同时工作。

2 个答案:

答案 0 :(得分:1)

好的,你有<access origin="*"/>所以这不是CORS问题。

我想也许你的问题是你没有在你的php中将数据类型设置为json但是期望它在javascript方面。尝试在php文件中添加以下行:

header('Content-Type: application/json');

修改


我看到你的php的url使用本地路径(之前应该注意但不知道你是否故意删除了服务器地址),所以你似乎把.php文件放在了phonegap应用程序中。

这不是它的工作原理。您需要在本地执行操作并使用javascript进行操作,或者您希望与服务器进行通信并且

  • 不要将任何php页面放在本地页面的www文件夹中
  • 为每个ajax调用提供服务器的URL。

答案 1 :(得分:0)

确保您的config.xml文件与index.html文件位于同一文件夹中,然后使用(或您所在的任何域)