如何从ajax responseText中获取json/array到javascript数组


how to get json/array from ajax responseText in to javascript array

我在我的项目中使用了codeigniter。当我试图从编码的数组中获取数组元素时,出现了问题。如何在我的javaScript中获取编码的json数组?

index.html

    
<html>
    <head>
    <script src="//ajax.googleapis.com/ajax/libs/prototype/1.7.1.0/prototype.js"></script>
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script>
    <script>
    function sendMessage(){
        var message=document.getElementById('chatInput').value;
        var receverID=document.getElementById('id').value;
        if(message==''){
            alert("please enter message");
        }
        new Ajax.Request('index.php', {
            method:'get',
            evalJSON: true,
            parameters: {
                message: message,
                id: receverID
            },
            onSuccess: function(transport){
                var data= transport.responseText;
                console.log(data);
            },
            onError: function() {
                alert('Error');
            },
            onComplete: function() {
            }
        });
    }
    </script> 
    </head>
    <body>
    <textarea name="chatInput" id="chatInput" cols="60" rows="3"></textarea><br />
     <input type="button" name="send_message"  onclick="sendMessage()" Value="Send"/>
     <input type="hidden" id="id" name="id" value="5">
    </body>
    </html>

index.php

<?php
     header('Content-type: application/json');
     $data['message'] = $_GET['message'];
     $data['sender_id'] = $_SESSION['id'];
     $data['user_id'] = $_GET['id'];
     $this->model_users->setMessage($data);
     echo json_encode($data);
?>

根据您的评论,您的响应中似乎有一个HTML。当您期望JSON响应时,最好将exit放在json_encode调用之后。

试着把它放在你的index.php中,它应该会起作用:

echo json_encode($data);
exit; // terminate the current script