ajax 接收json怎么都接受不到!!!

msnroot 发布于 2014/02/12 00:07
阅读 871
收藏 0
//chatroom.php 代码有些多,请耐心看一下 ,求大神指教,调了两天斗调不出来,返回的json数据都非常正常,可是chatroom.php怎么也接受不到数据,ie浏览器还一个劲的提示语法错误,但是语法没错,真的百爪挠心了!
PHP code
?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<html>
 
<?php
    session_start();
    $friendname=$_GET['friendname'];
    $sender=$_SESSION['username'];
?>
 <head>
  <meta http-equiv="content-type" content="text/html;charset=utf-8"/>
  <script type="text/javascript">
    window.setInterval("getMessage()",5000);//五秒钟刷新
    function getXmlHttpObject(){
        var xhr;
        if(window.ActiveXObject){
            xhr=new ActiveXObject("Microsoft.XMLHTTP");
        }else{
            xhr=new XMLHttpRequest();
        }
        return xhr;
    }
    //获取id
    function $(id){
        return document.getElementById(id);
    }
//<span style="color: #FF0000;">就是这里获取信息 但是怎么都获取不到 getMessage.php 页面在后面</span>
    function getMessage(){
        var myxhr=getXmlHttpObject();
        if(myxhr){
            var url="getMessage.php";
            var getter="<?php echo $friendname; ?>";
            var sender="<?php echo $sender; ?>";
            var data="getter="+getter+"&sender="+sender;
            //window.alert(data);
            myxhr.open("post",url,true);
            myxhr.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
            myxhr.onreadystatechange = function(){
                if(myxhr.readyState == 4){
                    if(myxhr.status == 200){
//                        var message=myxhr.responseXML.getElementsTagByName("content");
//                        window.alert(content.length);
                        //window.alert("----");
                        var res = eval("("+myxhr.responseText+")");
                        window.alert(res.length);
                    }
                }
            }
            myxhr.send(data);
        }
    }
 
 
  </script>
 </head>
     
 <body>
<center>
 
 <h1>聊天室(<?php echo $sender;?>正在跟<font color="red"><?php echo $friendname;?></font>聊天)</h1>
   
 
  <textarea id="textarea1" name="" rows="20" cols="40"></textarea><br>
 
  <input id="content" type="text" name=""/>
  <input type="button" value="发送信息" onclick="sendMessage()"/>
 </body>
</html>


//getMessage.php
PHP code
?
1
2
3
4
5
6
7
8
9
10
11
<?php   
    header("Content-Type:text/html;charset=utf-8");
    header("Cache-Control:no-cache");
    require_once'MessageService.class.php';
    $getter=$_POST['getter'];//接受者
    $sender=$_POST['sender'];//发送者 
    $messageService=new MessageService();//MessageService类中要有getMessage方法,是从数据库中取数据,以json的方法返回 
    $message=$messageService->getMessage($getter,$sender);
    echo $message;
    //
?>


//MessageService类中要有getMessage方法

PHP code
?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
function getMessage($getter,$sender){
            //isGet 是防止信息反复的取 取完后 就更新为 1 就不再取了
            $sql="select * from messages where getter='$getter' and sender='$sender' and isGet=0";
            $sqlhelper=new SqlHelper();
            $array=$sqlhelper->execute_dql2($sql);
            $ar=count($arrary);
            //返回给客户端
             
                //$res.='{"content":"'.{$row['content']}.'","sendTime":"'.{$row['sendTime']}.'"},';
            $messInfo="<message>";
            $res='[';
             
            for($i=0;$i<count($array);$i++){
                $row=$array[$i];
                if($i==count($array)-1){
                    $res.='{"content":"'.$row['content'].'","sendTime":"'.$row['sendTime'].'"}]';
                }else {
                    $res.='{"content":"'.$row['content'].'","sendTime":"'.$row['sendTime'].'"},';
                }
 
            }
 
            $sqlhelper->close_connect();
            return $res;//返回
        }


完整的json数据如下
[{"content":"sdf","sendTime":"2014-02-07 19:56:08"},{"content":"eee","sendTime":"2014-02-11 17:16:46"},{"content":"sss","sendTime":"2014-02-11 17:16:48"}]
加载中
0
ththththht
ththththht
sendMessage方法呢?
ththththht
ththththht
回复 @JokerTheGreat : 直接用 php的 json_encode吧。 符号要转义。
ththththht
ththththht
回复 @JokerTheGreat : 那个json不对,{},{}这样的格式 是不对的。这样就是两个json了。要加上[{},{}]把两个对象放入一个数组中。在getMessage.php上json加中括号。
ththththht
ththththht
回复 @msnroot : 建议你用jquery $.post试一下,是不是在ajax上出的错。
msnroot
msnroot
在getMessage.php文件中我用file打印,数据都没问题的,echo返回,chatroom.php就是接收不到,还报错
msnroot
msnroot
sendMessage是可行的,它没有返回值,单纯的传值,然后存入数据库,都是可以的,getMessage的方法接收数据,怎么也收不到
下一页
0
代东升
代东升
很少有用这种原生态的ajax了,jquery很方便,php的json_encode也很方便了
msnroot
msnroot
初学者,想了解清楚一点,就是调不出来,错误莫名奇妙
返回顶部
顶部