没有得到数组(通过AJAX-JSON调用web服务)

时间:2013-11-05 03:51:18

标签: php ajax json codeigniter rest

我正在尝试将我的Web服务的结果作为一个数组,然后循环结果以获取所有数据;到目前为止我做了什么:

在我的网页服务中,当我返回结果时,我使用

return json_encode($newFiles);

,结果如下:

"[{\"path\":\"c:\\\\my_images\\\\123.jpg\",\"ID\":\"123\",\"FName\":\"John\",\"LName\":\"Brown\",\"dept\":\"Hr\"}]"

然后在我的Web应用程序中,我通过RestService类中的以下代码调用其余的Web服务:

public function getNewImages($time) {
    $url = $this->rest_url['MyService'] . "?action=getAllNewPhotos&accessKey=" . $this->rest_key['MyService'] . "&lastcheck=" . $time;

     $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    $data = curl_exec($ch);
    if ($data) {
        return json_decode($data);
    } else {
        return null;
    }
}

然后在我的控制器中我有以下代码:

public function getNewImgs($time="2011-11-03 14:35:08") {
    $newImgs = $this->restservice->getNewImages($time);
    echo  json_encode$newImgs;        
}
and I'm calling this `enter code here`controller method by AJAX:

$("#searchNewImgManually").click(function(e) {
        e.preventDefault();
        $.ajax({
            type: "POST",
            async: true,
            datatype: "json",
            url: "<?PHP echo base_url("myProjectController/getNewImgs"); ?>",
            success: function(imgsResults) {
                alert(imgsResults[0]);
            }

        });
    });

但不是给我第一个对象,而是给我引号(结果的第一个字符)“

为什么?我传递JSON格式,在AJAX中我提到数据类型为“JSON”!

如果您需要更多说明,请告诉我们!谢谢:))

1 个答案:

答案 0 :(得分:1)

我在这里走出困境,但我认为你需要在JSON.parse(imgResults)电话的回复中拨打$ajax( . . .。我猜测alert(imgResults[0])正在返回json响应的第一个字符,这是一个引号。 另请注意,返回的json是一个对象,您的警报将显示“[Object] [Object]”。您将需要访问json的单个元素:

returnObj = JSON.parse(imgResults);
alert("object field is: " + returnObj.path); //or whatever relevant field you need to see to verify