我有2个文件(call.php和post.php)并使用ajax传递值从call到post,我想从post获得返回值,但这不起作用。当我改变帖子,修改“返回”到“回声”,它有效,但我不知道为什么。任何人都可以给我一个帮助?
最值得赞赏的例子。
call.php
<script type="text/JavaScript">
$(document).ready(function(){
$('#submitbt').click(function(){
//var name = $('#name').val();
//var dataString = "name="+name;
var dataPass = {
'name': $("#name").val()
};
$.ajax({
type: "POST",
url: "post.php",
//data: dataString,
data: dataPass,//json
success: function (data) {
alert(data);
var re = $.parseJSON(data || "null");
console.log(re);
}
});
});
});
</script>
post.php中:
<?php
$name = $_POST['name'];
return json_encode(array('name'=>$name));
?>
更新
相比之下 当我使用MVC时,“返回”会触发。public function delete() {
$this->disableHeaderAndFooter();
$id = $_POST['id'];
$token = $_POST['token'];
if(!isset($id) || !isset($token)){
return json_encode(array('status'=>'error','error_msg'=>'Invalid params.'));
}
if(!$this->checkCSRFToken($token)){
return json_encode(array('status'=>'error','error_msg'=>'Session timeout,please refresh the page.'));
}
$theme = new Theme($id);
$theme->delete();
return json_encode(array('status'=>'success'));
}
$.post('/home/test/update',data,function(data){
var retObj = $.parseJSON(data);
//wangdongxu added 2013-08-02
console.log(retObj);
//if(retObj.status == 'success'){
if(retObj['status'] == 'success'){
window.location.href = "/home/ThemePage";
}
else{
$('#error_msg').text(retObj['error_msg']);
$('#error_msg').show();
}
});
答案 0 :(得分:2)
这是预期的行为,Ajax将把所有内容输出到浏览器。
return
仅在您将返回的值与另一个php变量或函数一起使用时才有效。
简而言之,php和javascript无法直接通信,它们只通过php回显或打印进行通信。当使用Ajax或php与javascript时,你应该使用echo / print而不是return。
事实上,据我所知,php中的return
甚至不经常在全局范围内使用(在脚本本身上),它更可能用在函数中,所以这个函数保存一个值(但是不一定输出它)所以你可以在php中使用该值。
function hello(){
return "hello";
}
$a = hello();
echo $a; // <--- this will finally output "hello", without this, the browser won't see "hello", that hello could only be used from another php function or asigned to a variable or similar.
它正在研究MVC框架,因为它有几个层,可能delete()
方法是模型中的一个方法,它将其值返回给控制器,而控制器echo
将此值转换为图。
答案 1 :(得分:0)
dataType
选项
dataType: "json"
在 post.php 中试试这个,
<?php
$name = $_POST['name'];
echo json_encode(array('name'=>$name));// echo your json
return;// then return
?>