我想使用AJAX请求从Controller类中获取单个变量的值。但它仍然无法获得返回的变量。这是我使用的代码:
$(document).ready(function(){
$("#mybutton").click(function(){
var userdata = {username : $("#UserUsername").val()};
$.ajax({
type:'POST',
url: 'http://localhost/mycakephp/tests/',
data: userdata,
success: function(data){
alert(data.str);
}
});
});
});
控制器类:
<?php
class TestsController extends AppController {
public $name = 'Tests';
function index(){
$this->autoRender=false;
$str = "valid";
return $str;
}
}
?>
我想获得'$ str'变量,但是为什么alert()结果仍然是“未定义”,这应该是“有效的”?
答案 0 :(得分:0)
那是因为这不是AJAX请求的工作方式。它们无法捕获任何PHP返回值,因为它不是服务器端请求,也不是PHP。所有这一切都可以捕获它获得的实际HTTP响应,如HTML或JSON。您只需在函数中回显结果即可:
function index(){
$this->autoRender = false;
$str = "valid";
echo $str; // echo rather than return here
}
这样$str
就会在AJAX请求的data
reposonse(所以不是data.str
)中设置。
答案 1 :(得分:0)
您需要在函数名称
之后更新jquery add index $(document).ready(function(){
$("#mybutton").click(function(){
var userdata = {username : $("#UserUsername").val()};
$.ajax({
type:'POST',
url: 'http://localhost/mycakephp/tests/index',
data: userdata,
success: function(data){
alert(data.str);
}
});
});
});