无法从网址获取json

时间:2014-09-19 13:00:21

标签: jquery ajax json

我试图从网址获取json,但没有成功..

这是我的代码。我正在尝试使用jsonParse方法。

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <!--<link rel="stylesheet" href="http://maxcdn.bootstrapcdn.com/bootstrap/3.2.0/css/bootstrap.min.css">-->
    <link rel="stylesheet" href="<?php getBaseURL(); ?>style.css">
    <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"></script>
    <script type="text/javascript" src="http://code.jquery.com/jquery-latest.min.js"></script>
</head>
<body>    
    <div class="container-fluid">
        <!--<div id="menu"></div>-->
            <!--<img class="img-responsive" src="http://f1.haveeru.com.mv/photos/2014/08/0_14082524222_news.jpg" />
        <img src="http://f1.haveeru.com.mv/dhivehi/images/haveeru_logo_m.jpg" />-->
        <div id="demo"></div>
    </div>
    <script language="javascript">

        var url = "http://api.haveeru.com.mv/articles/read/160917";

        xmlhttp.onreadystatechange = function() {
            if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
                var myArr = JSON.parse(xmlhttp.responseText);
                myFunction(myArr);
            }
        }
        xmlhttp.open("GET", url, true);
        xmlhttp.send();

        function myFunction(arr) {
            var out = "";

            out += arr.heading;
            }
            alert(out);
        }


</script>
</body>

它甚至没有提醒任何事情......

任何帮助都会受到影响..谢谢

3 个答案:

答案 0 :(得分:2)

您的代码存在多个问题

1。 myFunction定义

中不需要的关闭

查看myFunction的定义,您可以看到需要移除的不需要的右括号。

2。 xmlhttp对象未定义

您已使用new XMLHttpRequest();声明xmlhttp对象。这在IE旧版本中会有所不同,因为您需要ActiveXObject而不是此版本。此外,您已经将Jquery作为代码中的依赖项。然后,您可以使用$.ajax$.getJSON代替此代码。您的代码将变得更具可读性。

3。跨域起源问题

您必须通过从请求的资源提供允许访问控制标头或在服务支持时使用jsonp来解决此问题。您可以通过

解决此问题

一个。如果您有权限,请在ajax目标发送的响应上设置“Access-Control-Allow-Origin”标题。

湾如果目标服务支持

,则使用jsonp作为替代

℃。如果以上都不起作用,您可以创建一个本地服务器端页面,通过您的ajax调用可以使用的本地路由读取和转发响应。

答案 1 :(得分:0)

1.我看不到xmlhttp = new XMLHttpRequest();

2.closing括号} in myfunction

答案 2 :(得分:0)

更好的做法是使用函数使用此函数创建XMLHttpRequestXDomainRequest

function getXDomainRequest() {
    var xdr = null;

    if (window.XDomainRequest) {
        xdr = new XDomainRequest();
    } else if (window.XMLHttpRequest) {
        xdr = new XMLHttpRequest({mozSystem: true});
    } else {
        alert("Your browser does not support AJAX");
    }
    return xdr;
}