Javascript json导入中断,但来自同一服务器源

Javascript json导入中断,但来自同一服务器源,javascript,php,jquery,ajax,json,Javascript,Php,Jquery,Ajax,Json,我正在探索ajax同步json导入到我的javascript代码中 我想使用的JSON源链接是 但为了降低服务器负载,大约一周前,我创建了一个静态页面,在服务器上显示相同的数据 我的javascript导入如下所示: <head> <title>Nusantech</title> <script src="\OpenLayers213\OpenLayers.js"></script> <script type="t

我正在探索ajax同步json导入到我的javascript代码中

我想使用的JSON源链接是

但为了降低服务器负载,大约一周前,我创建了一个静态页面,在服务器上显示相同的数据

我的javascript导入如下所示:

<head>
    <title>Nusantech</title>
    <script src="\OpenLayers213\OpenLayers.js"></script>
<script type="text/javascript" src="http://code.jquery.com/jquery.min.js"></script>
<script type="text/javascript">
var jsonData = {};
        $.ajax({
            url: "http://hendak.seribudaya.com/noobjson.php",
            async: false,
            dataType: 'json',
            success: function(data) {
                jsonData = data;
            }
    });
alert("Galaksi value retrieved from JSON (expected: 1) : "+jsonData.galaksi);
</script>

    <script type="text/javascript">
        function kemasMaklumat(id,content) {
            var container = document.getElementById(id);
            container.innerHTML = content;
        }
    </script>
</head>
它在noobjson.php链接上运行良好,但当我将其指向default.php时,什么也看不到。加载页面花了一段时间,这使它看起来像是加载了json值,但检索到的alertGalaksi值返回未定义的值

我将default.php页面的输出复制粘贴到web上的JSON验证器上,结果显示OK。我不知道为什么静态链接有效,但是基于$的链接无效

有人能告诉我发生了什么事吗

编辑

我试过:

<script type="text/javascript">
    var jsonData = {};
    $.ajax({
//          url: "http://hendak.seribudaya.com/noobjson.php",
            url:  "http://hendak.seribudaya.com/default.php?"+encodeURIComponent("galaksi=1&viewID=1&m=galaksi&t=json"),
//          url:  "http://hendak.seribudaya.com/default.php?galaksi=1&viewID=1&m=galaksi&t=json",
            async: false,
            dataType: 'json',
            type: 'GET',
            contentType: "application/json",
            success: function(data) {
                jsonData = JSON.parse(JSON.stringify(eval("("+data+")")));
                alert("Success");
                },
            error: function(data) {
                alert("Failed to download info." + data);
                }
        });
    </SCRIPT>
enter code here
除非我使用noobjson URL,否则我总是无法下载信息


就好像带有GET的URL不存在一样。

在发送请求之前,必须对URL组件进行编码。尝试:

$.ajax({
        url: "http://www.nusantech.com/hendak/default.php?" + encodeURIComponent('m=galaksi&galaksi=1&viewID=1&t=json'),
        async: false,
        dataType: 'json',
        success: function(data) {
            jsonData = data;
        }
});
参考资料:

我已经解决了它

在default.php中,我所做的是:

if ($_GET["t"]=="json") {
    $viewID=$_GET["viewID"];
    $galaksi=$_GET["galaksi"];
    $con=mysqli_connect($server, $user, $password, $database); 
    $sql="SELECT Hari FROM berita WHERE Galaksi=".$galaksi;
    $hari=1;
    $result = mysqli_query($con,$sql); while(($row = mysqli_fetch_array($result)) ){$hari=$row['Hari']; } 
    $lb="";
    if ($_GET["t"]!="json") { echo "<PRE>\n"; $lb="\n"; }
    echo "{\"galaksi\": ".$galaksi.",";
    echo $lb."\"hari\": ".$hari.",";
    echo $lb."\"planets\": [";
    //etc
    //etc
}
但这会在JSON输出处创建{\Galaksi\:1},而不是预期的{Galaksi:1}

所以我删除了json_编码,只输出字符串。 我还得把它移走

if ($_GET["t"]!="json"){ $JSONstr="<PRE>\n"; $lb="\n"; }
这次我还使用了不同的JSON测试仪

最初我使用的是表示JSON对于我的初始JSON输出是有效的。然后我使用了这个,它说我的JSON输出url无效,尽管如果我复制并粘贴输出字符串,它返回的是有效的

所以在做了这些更改并删除了之后,curiousconcept验证器给了我一个有效的状态

然后我在javascript中使用了它,现在我能够检索期望值


谢谢大家,希望这对其他人也有帮助。

旁注:在JS路径中使用/而不是反斜杠您可以通过比较两个URL的服务器响应来开始调试。我将反斜杠更改为/\n我仍然无法使其工作。我已经检查了两个URL的响应,我想不出来。我在上使用在线JSON验证器检查了的输出,它返回:JSON输入在JavaScript中有效。根据RFC4627 JSON规范,JSON输入是有效的。我不明白它为什么会出现问题。另外,我复制了default.php URL的输出并将其粘贴到一个新的空文件中,并且能够从这个新文件导入JSON详细信息。似乎我只能从静态文件导入JSON,而不能从动态生成的文件导入JSON。这正常吗?好奇:在进行AJAX调用之前,您是否使用GET参数对URL进行了编码?这仍然不起作用。就好像那个URL根本不存在一样。请查看对原始问题的其他编辑。
if ($_GET["t"]=="json") {
    $viewID=$_GET["viewID"];
    $galaksi=$_GET["galaksi"];
    $con=mysqli_connect($server, $user, $password, $database); 
    $sql="SELECT Hari FROM berita WHERE Galaksi=".$galaksi;
    $hari=1;
    $result = mysqli_query($con,$sql); while(($row = mysqli_fetch_array($result)) ){$hari=$row['Hari']; } 
    $lb="";
    $JSONstr="";
//  if ($_GET["t"]!="json") { $JSONstr="<PRE>\n"; $lb="\n"; }
    $JSONstr=$JSONstr."{\"galaksi\": ".$galaksi.",";
    $JSONstr=$JSONstr.$lb."\"hari\": ".$hari.",";
    $JSONstr=$JSONstr.$lb."\"planets\": [";
    //etc
    //etc
    //and at the end:
        echo $JSONstr;
}
 echo json_encode($JSONstr); 
if ($_GET["t"]!="json"){ $JSONstr="<PRE>\n"; $lb="\n"; }