JQuery.post回调数据为null

时间:2012-11-05 23:59:45

标签: php javascript zend-framework jquery

我遇到了ZEND,JQuery,PHP和Javascript的问题。我对这些语言很陌生,我只是想绕着它们努力。

我在其他情况下使用过jquery.post,但我现在无法让它做一个简单的调用。

phtml文件(/admin/user.phtml)

function testJquery()
{
var url = "<?php echo $myHome2Url.'/admin/newusercallback/sessionid/'.$_SESSION['mySessionId'].'/lang/'.$_SESSION['language']?>";
console.log(url);
$.post(url,{},
function(data)
{
    window.alert("Call successful!");
    window.alert(data);
},"json");

}

PHP文件:(AdminController.php)

public function newusercallbackAction()
{
     echo json_encode("Test");
}

存在/admin/newusercallback.phtml文件。

  <?php ?>

运行时,控制台会打印以下消息:

POST https://dev.myurl.ca/admin/newusercallback/sessionid/0c1a5e41-ad0a-470d-9901-305464b48908/lang/ENG
https://dev.myurl.ca/admin/newusercallback/sessionid/0c1a5e41-ad0a-470d-9901-305464b48908/lang/ENG
GET https://dev.myurl.ca/admin/user/sessionid/0c1a5e41-ad0a-470d-9901-305464b48908/lang/ENG/report_id/0/

我出现了2个弹出框,表示Call Successful!和Null

问题是第二个弹出框应该说&#34;测试&#34;而不是Null。

如果我直接浏览到网址https://dev.myurl.ca/admin/newusercallback/sessionid/0c1a5e41-ad0a-470d-9901-305464b48908/lang/ENG,我的浏览器会显示一个带有文字

的窗口
"Test"

(包括引号)

我的问题是,为什么testJquery的回调数据为空,当直接浏览页面时显示数据&#34;测试&#34;是否正确? 除此之外,我该如何解决呢!

3 个答案:

答案 0 :(得分:2)

这就是因为你的jQuery函数要求“json”格式,而文本“Test”不是json。

解决方案: 1.删​​除testJquery()函数中的“json”dataType:

    function testJquery(){
        $.post(url,{},function(data){
            window.alert("Call successful!");
            window.alert(data);
        });
    }

2。编辑AdminController.php文件以编码数组对象

    public function newusercallbackAction(){
        echo json_encode(array("Test"));
    }

答案 1 :(得分:1)

看起来你的控制器只响应HTML / TEXT。 我不知道该怎么做,但你的控制器应该返回JSON

答案 2 :(得分:1)

只有在响应标题“Content-Type”有效的json mime(application/json)时才会有效。 它也适用于简写版本.getJSON

在输出任何其他内容之前将其放入php中

  

header(“Content-type:application / json; charset = utf-8”);