2010-06-11 135 views
0

我有一个PHP API我正在使用它输出所有内容为JSON。处理来自AJAX请求的数据

我需要调用其中一个API方法并使用AJAX请求解析它。我正在使用jQuery(尽管它不应该)。

当我发出请求时,出错的时候出现了“parsererror”,如textStatus和“Syntax Error:invalid label”。

简化代码:

$.ajax 
({ 
    type: "POST", 
    url: "http://mydomain.com/api/get/userlist/"+mid, 
    dataType: "json", 
    dataFilter: function(data, type) 
    { 
     /* Here we assume and pray */ 
     users = eval(data); 
     alert(users[1].id); 
    }, 
    success: function(data, textStatus, XMLHttpRequest) 
    { 
     alert(data.length); // Should be an array, yet is undefined. 
    }, 
    error: function(XMLHttpRequest, textStatus, errorThrown) 
    { 
     alert(textStatus); 
     alert(errorThrown); 
    }, 
    complete: function(XMLHttpRequest, textStatus) 
    { 
     alert("Done"); 
    } 
}); 

如果我离开关eval(data)然后一切工作正常。那么,除data仍然未在success中定义。请注意,我正在使用PHP中的一组对象,然后通过json_encode将它们传递出去。这会有什么不同吗?

这方面还没有取得任何进展。如果有人相信他们可以提供帮助,我愿意抛出更多代码。

这里是东西

private function _get_user_colors($id) 
{ 
    $u = new User(); 
    $u->get_where(array('id' => $id)); 

    $bar = array(); 

    $bar['user'] = $u->stored; 

    foreach($user->colors as $color) 
    { 
     $bar['colors'][] = $color; 
    } 

    echo(json_encode($bar)); 
} 

我已经使用这个与其他基于PHP脚本问题PHP端。我不知道为什么Javascript会带来问题。

+0

试试'users = eval('('+ data)+')';'? – Fluffy 2010-06-12 14:51:38

回答

1

ParseError通常表示来自服务器的响应格式错误。如果你直接在浏览器中加载它看起来不错?

+0

是的,它看起来很好。所有的输出都来自php的'json_encode'函数。 – 2010-06-11 22:08:21

1

尝试在错误处理程序中输出alert(request.responseText)(并将第一个参数重命名为request)。这应该解决你的错误输出你的脚本。

+0

它向我展示了我的回应。没有错误的输出。但是,如果我放弃'eval(数据)',它会触发'成功'。我应该怎样解码'JSON'? – 2010-06-11 22:10:31

+0

哦! jQuery的ajax()函数为您处理解码。如果您使用的是Chrome或Firefox + Firebug,请用console.log(data)替换eval(数据)行并检查该对象 - 它应该将所有数据都视为属性。 – 2010-06-11 22:33:12

+0

@Rob:它似乎没有识别出'console.log',如果我只是'提醒(数据)'它说'未定义'。 – 2010-06-12 14:03:54