ajax加载json文件在iOS uiwebview中不起作用,但在safari中工作

时间:2014-10-29 20:03:27

标签: ios ajax json uiwebview

我正在编写iOS uiwebview中使用的html,用javascript在服务器上加载json文件。以下是json数据。

{"posts": {"post": [
    {
        "date": "2014-08-21",
        "id": "00e8fa3a41bb42f7be1997053830516b",
        "title": "abc",
        "content": "`w;lkjjfdsd;lkfadvn"
    },
    {
        "date": "2014-09-03",
        "id": "20fe501e95994bfebe9f62abce99aa36",
        "title": "kl;jsdfja",
        "content": "lk;sdjfsafj"
    },
    {
        "date": "2014-09-03",
        "id": "013cc71e4a424bc3826731711d69ca6e",
        "title": "def",
        "content": "defji"
    }
]}}

我提出的ajax代码如下。我可以弹出第一个警报,但不会弹出第二个警报。有任何想法吗?人

$.ajax({
                   type: 'GET',
                   url: url,
                   dataType: 'json',
                   async: true,
                   crossDomain: true,
                   success: function(data) { alert(url); alert(data.posts.post[0].date); }

            });

iOS代码:

- (void)viewDidLoad {
    [super viewDidLoad];
     NSURL *url = [NSURL fileURLWithPath:[[NSBundle mainBundle] pathForResource:@"index" ofType:@"html" ]];
    [_mWebView loadRequest:[NSURLRequest requestWithURL:url]];
}

问题是如果我在safari中运行html,ajax代码工作正常(弹出两个警报)。但是如果我在iOS的UIWebview中加载它,它就无法工作。所以我在网上搜索了这个问题,根据我看到它可能是一个跨域问题(在web视图中加载的index.html是本地的,但它请求的json在服务器上)。我们如何使我的代码加载数据/文件跨域?任何的想法?感谢。

2 个答案:

答案 0 :(得分:0)

使用JavaScript控制台捕获和读取错误消息。我建议通过单击F12启用一个并重试请求。

答案 1 :(得分:0)

读取数据的函数应为success,而不是complete

$.ajax({
  type: 'GET',
  url: url,
  dataType: 'json',
  async: true,
  crossDomain: true,
  success: function(data) { alert(url); alert(data.posts.post[0].date); }
});