6

我遇到了 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 个弹出框出现,上面写着呼叫成功!和空

问题是第二个弹出框应该说“测试”而不是 Null。

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

"Test"

(包括引号)

我的问题是,为什么 testJquery 的回调数据为 Null,当直接浏览页面时正确显示数据“测试”?除此之外,我该如何解决它!

4

3 回答 3

2

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

解决方案: 1. 删除 testJquery() 函数上的“json”数据类型:

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

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

    public function newusercallbackAction(){
        echo json_encode(array("Test"));
    }
于 2012-11-06T00:12:12.360 回答
1

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

于 2012-11-06T00:10:18.873 回答
1

它仅在响应头“Content-Type”是有效的 json mime 时才有效,即application/json. 它也发生在速记版本.getJSON

在你输出其他任何东西之前把它放在你的php中

header("内容类型: application/json; charset=utf-8");

于 2012-11-07T16:35:27.580 回答