【问题标题】:Why json content is not being output in ajax request?为什么 ajax 请求中没有输出 json 内容?
【发布时间】:2014-10-16 11:32:16
【问题描述】:

我正在尝试从一个页面获取 json 数据到另一个页面。

js_page.php

<!doctype html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>

</head>
<body>

<script src="//ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script type="text/javascript">

    $.get('php_page.php', function(data){

        for (var i = 0; i < data.length; i++) {
            alert(data[i]);
        };
    }, 'json');

</script>

</body>
</html>

如果我在没有任何 html 的情况下设置 php_page.php 的页面内容,它就可以工作。

php_page.php

<?php

 echo $name = json_encode(array('myname', 'myage'));

但是,如果我将该代码放在 html 内容 js_page.php 中,则不会输出任何内容。

<!doctype html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>

</head>
<body>
   <?php

     echo $name = json_encode(array('myname', 'myage'));
  ?>

</body>
</html>

为什么会这样以及如何解决?

【问题讨论】:

  • 可能是因为您将服务器端代码与客户端混合在一起。
  • 因为 php_page.php 返回 HTML 并且您告诉 $.get() 期待 json。 $.get() 无法知道 HTML 的哪些部分是 JSON。
  • 您只能从 php 页面获取响应。你不能在 hmtl 标签中使用 php 来实现它
  • @Jim 如果我将 php_page.php 的内容类型更改为 "application/json" 怎么办?我仍然没有得到任何东西
  • 在这里工作正常codepad.viper-7.com/KbQFEg

标签: javascript php html json


【解决方案1】:

您不应该将 JSON 放在 HTML 标记中。你的php_page.php 的第一个版本是正确的。

【讨论】:

  • 如果我使用 header 函数更改 php_page.php 的内容类型,例如页面顶部的 header('content-type: application/json'),我仍然没有得到任何内容js_page.php
  • @user1906399 如果您愿意,您可以将内容类型标头设置为'content-type:fluffyrabbits' - 您仍然会发送与 json 混合的 html,这是没用的。 为什么你想这样做,这没有任何意义
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-08-04
  • 2021-01-31
  • 2018-03-10
  • 1970-01-01
  • 2012-06-25
  • 1970-01-01
相关资源
最近更新 更多