1

以下是我使用过的技术:HTML 5、JS、JQuery、AJAX、RESTFul POST web service、IOS

问题陈述:

我创建了一个 iOS 本机应用程序并将某些 HTML 和 JS 文件放在我的应用程序中。在模拟器上启动应用程序时,我在 Web 视图中打开我的 HTML 文件,然后单击一个按钮,我点击了一个部署在本地 Windows 机器上的 Web 服务。

但是,我无法访问我的网络服务。我能够从 Android 模拟器和本地客户端测试程序执行相同的活动。

请您帮我解决这个问题。

下面是命中服务的 AJAX 代码:

var jsonObject  = new Object();
jsonObject.passengers= 4;
jsonObject.country= "India";
jsonObject.state= "Maharashtra";

var url = "http://<HOST>:<POST>/JerseyTest/services/emanual/demo";
    $.ajax({
    url: url,
    type: "post",
    data: inputJsonString,
    success: function(data, status){
            alert("success");
            alert("In Success: " + JSON.stringify(status));
            alert("In Success: " + JSON.stringify(data));
            //$("#result").html('Submitted successfully');
    },
    error:function(data, status){
            alert("failure");
            alert("In Error: " + JSON.stringify(status));
            alert("In Error: " + JSON.stringify(data));
            //$("#result").html('There is error while submit');
    }
    });

此代码适用于 Android Emulator 的独立 HTML 文件。我需要在 iOS 机器或模拟器上做任何额外的配置吗?非常感谢任何帮助。

问候, 维内特

4

2 回答 2

0

确保通过放置一个alert("jQuery is loaded")inside来加载 jQuery

$(function(){
    alert("jQuery is loaded")
});

如果未加载 jQuery,请在 XCode 中检查 jQuery 源文件是否位于项目 Target 的 Build Phases 选项卡下的 Compile Sources 中。如果是,请将其删除并将其添加到 Copy Bundle Resources。

另外,尝试像这样格式化 AJAX,

$.ajax({
    url:url,
    type: 'post',
    beforeSend: function(xhr, status, error){
        xhr.overrideMimeType("application/json; charset=UTF-8");
    },
    data: {key: "value"},
    error: function(data) {
        alert("Error");
        console.log("Error");
    },
    success: function(data, textStatus, jqXHR) {
        alert("Success");
    }
});
于 2013-09-25T13:43:09.497 回答
0

听起来像一个CORS问题。确保您的 REST 服务标头包括:

Access-Control-Allow-Origin: *
Access-Control-Allow-Methods: POST, GET, OPTIONS
Access-Control-Allow-Credentials: true
于 2013-10-09T12:53:28.533 回答