我想从JavaScript调用PHP函数。
我通过传递两个参数调用PHP函数,我希望PHP函数简单地回显这些参数。为此,我编写了以下代码,但它不起作用,这意味着代码不会打印任何内容。请帮忙。
的JavaScript
jQuery.ajax(
{
type: "POST",
url: 'save.php',
dataType: 'json',
data: {functionname:'saveUser', arguments:[username, password]},
success: function (obj, textstatus) {
if( !('error' in obj) ) {
alert(obj.result);
}
else {
console.log(obj.error);
}
}
});
PHP
<?php
header('Content-Type: application/json');
$aResult="done";
if( $_POST['functionname'] == 'saveUser' ) {
echo $_POST['arguments'][0] +" "+ $_POST['arguments'][1];
echo json_encode($aResult);
}
?>
答案 0 :(得分:3)
使用+
,您尝试将参数转换为数字并将它们添加到一起。对于字符串连接,您需要.
而不是+
:
echo $_POST['arguments'][0] . " " . $_POST['arguments'][1];
但是在评论中作为Rayon points out,您将获得无效的JSON。
以下访问参数就好了,并返回JSON:
<?php
header('Content-Type: application/json');
$aResult="done";
if( $_POST['functionname'] == 'saveUser' ) {
echo json_encode(Array(
'arg0' => $_POST['arguments'][0],
'arg1' => $_POST['arguments'][1],
'message' => $aResult
));
}
?>
当然,您的JavaScript并不是在寻找这些属性名称。这会使用您当前的JavaScript警告名称:
<?php
header('Content-Type: application/json');
if( $_POST['functionname'] == 'saveUser' ) {
echo json_encode(Array(
'result' => $_POST['arguments'][0] . ' ' . $_POST['arguments'][1]
));
}
?>
答案 1 :(得分:0)
在你的php中试试这个:
header('Content-Type: application/json');
$aResult="done";
if( $_POST['functionname'] == 'saveUser' ) {
echo $_POST['arguments'][0] +" "+ $_POST['arguments'][1];
echo json_encode(array('result'=>$aResult));
}
您正在使用obj.result在ajax成功中使用警报。所以我在json_encode函数中使用了数组和结果索引。
你在json_encode php中回显的值,你可以在ajax成功获得这个值。
使用控制台日志,如
console.log(obj);
您将在对象中获得回复。