Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/363.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从JavaScript调用PHP函数时没有输出_Javascript_Php - Fatal编程技术网

从JavaScript调用PHP函数时没有输出

从JavaScript调用PHP函数时没有输出,javascript,php,Javascript,Php,我想从JavaScript调用一个PHP函数 我通过传递两个参数来调用PHP函数,我希望PHP函数只响应这些参数。为此,我编写了以下代码,但它不起作用,这意味着代码不打印任何内容。请帮忙 JavaScript jQuery.ajax( { type: "POST", url: 'save.php', dataType: 'json', data: {functionname:'saveUser', arguments:[username, password]},

我想从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


通过使用
+
,您试图将参数转换为数字并将它们相加。对于字符串串联,您需要
而不是
+

echo $_POST['arguments'][0] . " " . $_POST['arguments'][1];
但是作为注释中的人造丝,您将得到无效的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]
        ));
    }
?>

通过使用
+
,您试图将参数转换为数字并将它们相加。对于字符串串联,您需要
而不是
+

echo $_POST['arguments'][0] . " " . $_POST['arguments'][1];
但是作为注释中的人造丝,您将得到无效的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]
        ));
    }
?>

在您的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成功中使用alert。所以我在json_encode函数中使用了数组和结果索引

您在json_encode php中的echo值您可以在ajax成功中获得该值

使用类似于日志的控制台

console.log(obj);
您将在obj中得到响应。

在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成功中使用alert。所以我在json_encode函数中使用了数组和结果索引

您在json_encode php中的echo值您可以在ajax成功中获得该值

使用类似于日志的控制台

console.log(obj);


您将在obj中得到响应。

json\u encode($aResult)的输出是什么?PHP文件未发送有效的
json
或..@T.J.Crowder,
echo$\u POST['arguments'][0]+“”+$\u POST['arguments'][1];echo json_编码($aResult)不会返回有效的json。仅
echo json\u编码($aResult)可以..
+
用于连接。。使用
@RayonDabre:我刚刚看到你对
的评论。如果您愿意,我可以删除我的答案,这样您就可以将其作为答案发布。(我不怎么做PHP,我一直在想它为什么不工作。)@RayonDabre:我只是在用一个无聊的老PHP安装。我找回了我用过的钥匙。但是使用字符串,所以我将把它们加回去?PHP文件未发送有效的
json
或..@T.J.Crowder,
echo$\u POST['arguments'][0]+“”+$\u POST['arguments'][1];echo json_编码($aResult)不会返回有效的json。仅
echo json\u编码($aResult)可以..
+
用于连接。。使用
@RayonDabre:我刚刚看到你对
的评论。如果您愿意,我可以删除我的答案,这样您就可以将其作为答案发布。(我不怎么做PHP,我一直在想它为什么不工作。)@RayonDabre:我只是在用一个无聊的老PHP安装。我找回了我用过的钥匙。但是使用字符串,所以我会把它们加回去。@ali-salman:check-console.log(obj);在ajax中success@ali-salman:检查console.log(obj);在ajax中success@AliSalman:它在这一点上起作用(我在发布之前用ajax代码尝试过)。当然,JavaScript会提醒
未定义的
,因为我发回的不是它想要的。但是钥匙很容易换。我添加了另一个块,它将参数发送回,并连接在一起,正如
result
一样,它会被你的JavaScript代码提醒。是的,它会起作用。如果你使用firefox检查控制台出错,你只需要更改你的java脚本ajax成功响应firebug@devpro:上面的工作没有任何JavaScript更改。是的,我的兄弟,这肯定是工作。我也用同样的方法进行了测试+1我已经更新了我的问题,请现在查看并测试,它对我不起作用me@AliSalman:它在这一点上起作用(我在发布之前用ajax代码尝试过)。当然,JavaScript会提醒
未定义的
,因为我发回的不是它想要的。但是钥匙很容易换。我添加了另一个块,它将参数发送回,并连接在一起,正如
result
一样,它会被你的JavaScript代码提醒。是的,它会起作用。如果你使用firefox检查控制台出错,你只需要更改你的java脚本ajax成功响应firebug@devpro:上面的工作没有任何JavaScript更改。是的,我的兄弟,这肯定是工作。我也用同样的方法进行了测试+1我已经更新了我的问题,请现在查看并测试,它对我不起作用