【问题标题】:what this json must work? [closed]这个json必须做什么? [关闭]
【发布时间】:2012-10-31 04:57:50
【问题描述】:

嗨,我搜索了很多从 php 获取响应,如果该响应正常,则执行某些操作,如果其错误,请执行其他操作(!!!!!!!!!当我从该 PHP 获得其他输出时!!!! !!) 这是我的索引文件

<head>
<script src="jquery-1.7.2.js" type="text/javascript"></script>
<script src="js.js" type="text/javascript"></script>
</head>
<body>
<p> click </p>
<input type="text" id="who">
<br>
<input type="text" id="why">
<div id="bg" align="center">
</div>
</body>

这是我的 JS 文件

$(document).ready(function(){
    $('p').click(function(){
        var who = $('input#who').val();
        var why = $('input#why').val();     
        $.post('file.php',{who:who,why:why},function(data) {
    if(data.success){
         alert(data.message);
    }
    else{ alert('ERROR:' + data.message);
    }
});




    });
});

这是我的文件.php

<?php
$response = array('success' => 'true', 
    'code' => "jQuery('#bg').html('\"Javascript\", \"json\", \"PHP\"');");
echo json_encode($response);
?>

我的问题: 1-为什么这不起作用我收到警报(错误:未定义) 2-当它有其他输出时,我如何从该 php 文件中获得一些结果 像这样:

<?php
echo "1";
echo "2";
echo "3";
and now echo that json
?>

谢谢:(

【问题讨论】:

  • 天哪。通常最好在最后放一个笑脸。 :)
  • data.success 至少应该可以工作,尽管alert(data.message) 会失败,因为数据中没有“消息”。尝试从您的 PHP 文件中发送 Content-type: application/json 标头。

标签: php javascript jquery json


【解决方案1】:

为什么这不起作用我收到警报(错误:未定义)

你必须告诉 jQuery 响应是 JSON。您可以通过将'json' 作为第四个参数传递给$.post [docs] 或通过在PHP 中设置正确的响应标头来实现:

header('Content-Type: application/json');

您也可以使用jQuery.parseJSON [docs] 自己解析响应。

当它有类似这样的其他输出时,我如何从该 php 文件中获得一些结果

没有简单的方法。响应不再是有效的 JSON,因此您必须以某种方式自己解析它。您应该避免这样做并将所有内容都返回为 JSON。

【讨论】:

  • You have to tell jQuery。嗯,不,你没有,它在没有明确说明它是什么的情况下猜测数据类型;问题出在 JSON 前面的 "123" 上 :)
  • @Jack:我不认为 jQuery 会尝试猜测内容类型是否设置为 HTML。至少这是许多问题的根源。响应中的无效数据是第二个问题,与第一个问题无关。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多