我遇到了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;是否正确? 除此之外,我该如何解决呢!
答案 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”);