首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何访问php对象返回的json数据

如何访问php对象返回的json数据
EN

Stack Overflow用户
提问于 2012-12-05 13:19:49
回答 4查看 179关注 0票数 1

我在php中创建了一个大型数据结构,并将其发送回一个jQuery "post“请求。数据以下列格式到达

代码语言:javascript
运行
复制
"{\"event\":{\"id\":\"5\",\"title\":\"Test Event\",\"event_ref\":\"TEST\",\"approval\":\"na\",\

数据以双引号转义的双引号字符串的形式返回。url目录标记也被转义。以上只是返回的字符串的一小部分。

  • 如果我警告(数据),我将得到显示在警报框中的字符串。
  • 如果我警告(数据),我会得到一个“显示”
  • 如果我警告(数据事件),我会得到未定义的显示。

通常,我不能使用点表示法或数组表示法来访问数据。我想我需要去掉外边的双引号,不用转义。数据是一个数组,其中一些项是简单值,一些是对象,有些是对象数组。

如何访问返回的数据?结构将永远是相同的,尽管其中的一些对象将经常丢失。

js代码是:

代码语言:javascript
运行
复制
//  The login button
$("#loginButton").click(    function(){
var username = $('input#login-username').val();     
var password = $('input#login-passwd').val();       
    alert("Login button clicked with username/password: "+username+" / "+password);
$.post(
    $_interface,
    { option: 'login', userID: username, pwd: password },
    function(response){
        if (response) {
//              alert("Response = true");
            $.post(
                $_interface,
                { option: 'superGlobalValues', target: 'session' },
                function(data){
                alert(data);
                    }
                );
            } else {
            alert("Response = false");  
            }
        }
    );
}
);
EN

回答 4

Stack Overflow用户

发布于 2012-12-05 13:26:25

jquery上的.post函数的结构是:

代码语言:javascript
运行
复制
jQuery.post( url [, data] [, success(data, textStatus, jqXHR)] [, dataType] )

在本例中,您使用的是url、data和success函数,理论上jquery应该已经知道答案是json答案,并计算对象的答案,但只需确保更改代码以添加json数据类型:

代码语言:javascript
运行
复制
$.post(
  $_interface,
  { option: 'login', userID: username, pwd: password },
  function(response){
    if (response) {
        // alert("Response = true");
        $.post(
            $_interface,
            { option: 'superGlobalValues', target: 'session' },
            function(data){
            alert(data);
                }
            );
        } else {
        alert("Response = false");  
        }
    }, "json"
);

如果这不起作用,就评估答案,所以不要这么做

代码语言:javascript
运行
复制
function(data) {
  alert(data);
}

做一些类似的事情

代码语言:javascript
运行
复制
function(data) {
  my_json = eval(data);
  alert(my_json);
end
票数 0
EN

Stack Overflow用户

发布于 2012-12-07 15:55:36

  1. 检查magic_quotes_gpc和magic_quotes_runtime在php.ini中是否已关闭(使用搜索)
  2. 您还可以在您的.htaccess中编写: php_flag magic_quotes_gpc 0 php_flag magic_quotes_runtime 0
  3. 您可以对请求的数据使用php函数strip斜杠($string)。
票数 0
EN

Stack Overflow用户

发布于 2012-12-05 13:25:33

jQuery ajax对象具有param dataType,可以将其设置为JSON,您将得到正确的解析响应。示例:

代码语言:javascript
运行
复制
$.ajax({
  type: 'POST',
  url: url,
  data: data,
  success: function(data){ //data contains parsed response, try to console.log this },
  dataType: 'json'
});
票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13724193

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档