在JSON中使用[object object]进行响应

时间:2014-03-27 17:25:32

标签: jquery json

当我使用JSON执行我的页面时总是有这样的响应:[object object]。我在其他帖子中读过的是不存在字段的问题,但是这个错误也出现了评论

$.each(result, function(i, row) { 
    console.log(JSON.stringify(row)); 
    $('#data-list').append('<li><a href="" data-id="' + row.id+ '"><h3>' + row.nombre + '</h3><p>' + row.denominacion + '</p></a></li>');
});

我的javascript是:

$(document).on('pageinit', '#home', function(){      
            var stuff = {
              id:null,
              nombre:null,
              precio:null,
              denominacion:null
              };
            var jsonString = JSON.stringify(stuff);

     $.ajax({
            url: "http://www.domain.com/ws.php?TIPO=OK" ,
          crossDomain: true,
            type:"GET",
            contentType: "application/json; charset=utf-8",
            dataType: "jsonp",
                async: true,
                data: jsonString,
                success: function (result) {
                    alert(result);
                    $.each(result, function(i, row) {
                    console.log(JSON.stringify(row));
                    $('#data-list').append('<li><a href="" data-id="' + row.id+ '"><h3>' + row.nombre + '</h3><p>' + row.denominacion + '</p></a></li>');
                     });
                $('#data-list').listview('refresh');
                },
                error:  function(xhr, status, error){
                          console.log(status + '; ' + error+ ';');},
                jsonpCallback:function(response) {
                          console.log('callback success'+response);
              }
            });         
        });

在webserver中非常简单,只在JSON中做一个select和encapsule,我尝试使用Content-type:application / javascript&#34;和&#34;内容类型:application / json&#34;但同样的结果,这是Web服务代码

<?php
    include($DIRCONF . 'conf/VARIABLES.ini.php'); //incluimos configuración
    include($DIRCONF . 'JSON.php'); $tipo=$_GET['TIPO']; $json = new Services_JSON;

$conexion = mysql_connect(SERVIDOR_MYSQL, USUARIO_MYSQL, PASSWORD_MYSQL); mysql_select_db(BASE_DATOS, $conexion);

$que = "SELECT * FROM `DATOS`";

$res = mysql_query($que, $conexion) or die(mysql_error());

while ($row = mysql_fetch_assoc($res)) {
    $data[] = $row; } //Cerramos la conexion a la base de datos mysql_close($conexion);


//header("Content-type: application/javascript"); header("Content-type: application/json"); echo json_encode($data) ; ?>

2 个答案:

答案 0 :(得分:1)

[object object]是JavaScript在您尝试使用对象时为其提供的内容,就好像它是一个字符串一样。您的代码可能很好,但console.log('callback success'+response);永远不会记录有用的信息。 可能工作:

console.log('callback success: ' + JSON.stringify(response));

答案 1 :(得分:0)

我可以找到解决方案问题是Webservice,如果你使用jsonp:&#39; jsoncallback&#39;需要在WS中返回$ _GET [&#39; jsoncallback&#39;] JSON对象如果没有放置它,如何找不到任何对象并做错误。

例如:

echo $_GET['jsoncallback'] . '(' . json_encode($records) . ');';