【问题标题】:JSON/jQuery/PHP : Uncaught SyntaxError: Unexpected token :JSON/jQuery/PHP:未捕获的 SyntaxError:意外令牌:
【发布时间】:2013-08-29 15:19:45
【问题描述】:

更新:现在我可以看到数据已加载(从 Chrome 上的 F12 > 网络)。但是跨度不会使用从 JSON 加载的数据进行更新:(

我有错误“Uncaught SyntaxError: Unexpected token”,但经过数小时的搜索和测试我不知道为什么。

index.html 头:

<script type="text/javascript">
    var displayResult = function(response){
        $("#fruit_name").append(response.fruit_name);
        $("#fruit_color").append(response.fruit_details.Color);
        $("#fruit_taste").append(response.fruit_details.Taste);
    }
    var response = $.ajax({
    type: "GET",
    dataType:"json",
    url: "https://www.domain.tld/api/?core=fruits&function=getFruits",
    data: "",
    success: displayResult
});
</script>

index.html 正文:

<p>Fruit name : <span id="fruit_name"></span></p>
<p>Fruit color : <span id="fruit_color"></span></p>
<p>Fruit taste : <span id="fruit_taste"></span></p>

api 文件(PHP):

$array = array(
            "fruit_name" => "Tomato",
                "fruit_details" => array(
                    "Color" => "red",
                    "Taste" => "acid"
                )
            );
echo json_encode($array,JSON_UNESCAPED_UNICODE);

api 原始返回:

{"fruit_name":"Tomato","fruit_details":{"Color":"red","Taste":"acid"}}

有人可以帮我吗?

内容 JSON 作为 Content-Type: application/json 发送

谢谢。

【问题讨论】:

  • 第 4 行和第 5 行缺少分号
  • 复制/粘贴时出错,已更新;)
  • 看起来不错...这是浏览器控制台指出的那一行
  • 你有错误发生位置的行号吗?
  • 出现错误的时间和地点

标签: php javascript jquery json


【解决方案1】:
url: "https://www.domain.tld/api/?core=fruits&function=getFruits&callback=?",

您在网址中使用了callback 参数,这意味着jQuery will treat it 作为JSONP call - 您的回复无效。删除它,您的响应将被正确解析为 JSON:

url: "https://www.domain.tld/api/?core=fruits&function=getFruits",

【讨论】:

  • 好的,谢谢,我已经通过删除“&callback=?”从 JSONP 编辑到 JSON。现在我没有来自控制台的错误,但跨度没有更新加载的数据:/
  • 好的,现在我可以看到数据已加载(通过 F12 > Chrome 上的网络)。但是跨度不会使用从 JSON 加载的数据进行更新 :(
  • 然后尝试记录 jQuery 对象和 response 参数以确保
【解决方案2】:

这是 jQuery 代码:

$("#fruit_name" ).val(response.fruit_name);
$("#fruit_color" ).val(response.fruit_color);
$("#fruit_taste" ).val(response.fruit_taste);

确保它附有:

$(document).ready(function() {
    $("#fruit_name" ).val(response.fruit_name);
    $("#fruit_color" ).val(response.fruit_color);
    $("#fruit_taste" ).val(response.fruit_taste);
});

【讨论】:

  • 当然不会改变,它已经在 $(document).ready() 调用中(并作为 AJAX 请求的成功回调传递)。
  • @AnthonyGrist 请告诉我,我怎么知道代码已经在$(document).ready() 中?? OP 没有在问题中提供它。
  • @matewka 看来问题已经来回编辑了;当我阅读问题时,那里有一个$(document).ready( 行。
  • @AnthonyGrist 如果是这样,请善待并撤消您的反对票(当然,如果其中一个是您的)。
猜你喜欢
  • 1970-01-01
  • 2013-10-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-08-25
  • 2017-08-16
相关资源
最近更新 更多