从外部网站获取JSON数据

时间:2012-07-30 21:02:03

标签: javascript jquery html json cordova

我正在尝试使用以下代码从网站获取JSON数据,但是我收到错误Uncaught SyntaxError:文件中的意外标识符:///android_asset/www/projectName.html:1 如果我将网站上的数据保存为.json文件,我可以很好地访问它,但如果我从网站访问它则不能。如何从网站上完成这项工作?

HTML:

<html>
<head>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js">
    </script>
<script type="text/javascript">
        $(document).ready(function(){
            $("button").click(function(){
            $.get('http://example.ca/log_sheets.json', function(data) {
                alert('get performed');
                var obj = eval ("(" + data + ")");
                $("p").html(obj[0].log_sheet.activity_type);
            });
        });
    });
</script>
</head>

<body>
    <h2>Heading</h2>
    <p>Display</p>
    <button>Click me</button>
</body>
</html>

JSON数据示例:

[{"log_sheet":{"activity_type":"Normal","activity_value":null,"carbs_value":25.0, ect... }}]

使用phonegap运行html页面的代码:

package com.example.projectName;

import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
import android.view.MenuItem;
import android.support.v4.app.NavUtils;
import org.apache.cordova.*;

public class MainActivity extends DroidGap {

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        super.loadUrl("file:///android_asset/www/projectName.html");
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.activity_main, menu);
        return true;
    }


}

2 个答案:

答案 0 :(得分:0)

file:///android_asset/www/projectName.html

该链接看起来像一个本地文件,因此,即使您在网络服务器中将其映射为应该预处理的内容,它也会按原样显示。

如果它真的是您项目的一部分,看起来您必须发布相关代码。

答案 1 :(得分:0)

如果jQuery认为你正在检索JSON(通过服务器提供的mime-type,最终参数为$.get(...,'json'),或者使用$.getJSON),那么传递给回调的数据将已经是JavaScript对象。

在这种情况下,您不希望eval