我知道有类似的问题,但我想在此澄清一下。
使用以下Ajax设置:
$.ajaxSetup({
cache: true,
dataType: 'json',
error: function(xhr, status, error){
console.log(status);
},
timeout: 60000, //Timeout of 60s
type: 'POST',
url: 'test.php'
}); //Close $.ajaxSetup()
$('#openTest').bind('click', function(){
$.ajax({
data: {val: "Hello", val2: "Hello2"},
success: function(response){
console.log('complete');
console.log(response);
}
});
当'test.php'为:
时<?php
$return= array ('one'=>'one1', 'two'=>'two1');
return json_encode($return);
?>
我得到了解析错误。但是当我用'echo'替换'return'时,它可以正常工作。
<?php
$return= array ('one'=>'one1', 'two'=>'two1');
echo json_encode($return);
?>
我将通过这个$ .ajax调用检索更复杂的数据,我期待“返回”工作,'echo'在我看来似乎不是很好的解决方案。
那么,你在暗示什么? Ajax设置或调用有什么问题,所以'return'不起作用,并且'echo'是一个很好的解决方案吗?
感谢。
答案 0 :(得分:1)
return
将数据返回给函数的调用者,因为您不在函数中,所以不能使用return。
echo
打印数据。所以echo
是要走的路。
答案 1 :(得分:1)
当您在php中返回时,它不会被打印。当你做回声时,会打印出来。
php或Ajax没有任何问题,只是背景错误。
Sinply put,当你需要捕获返回的数据并使用它时可以使用return。使用return的最佳案例是函数。
需要直接打印时使用echo。
在这种情况下,使用echo和exit是我推荐的。
答案 2 :(得分:1)
返回用于函数中以获取数据并在PHP中以某种方式使用它。 Echo用于ajax调用,因为您的PHP代码会将数据输出到调用它的任何内容(浏览器,您的ajax调用等)。
您可能还希望在PHP文件中使用header('Content-Type: application/json');
来使事情正确无误。
答案 3 :(得分:1)
不,您的ajax设置没有问题,这是因为return
与PHP objects
或variables
一起使用,并且它无法将值返回给{{}等其他语言{1}}。当您使用javascript
时,它会将值发送到echo
,以便HTTP response
可以处理它。
执行复杂数据的最佳方法是将它们发送到以下数组中:
ajax response
然后您可以在$arr = array();
$arr['res'] = 'something';
$arr['res2'] = 'somethingelse';
echo json_encode($arr);
object.parameter
处理jquery code
,因为我之前已在此example中指定了它。
答案 4 :(得分:0)
总是在ajax调用中将回显或打印或解析为html文件,然后获取数据,这将为您节省大量的工作。