繁体   English   中英

从JavaScript调用PHP函数时无输出

[英]No output on calling PHP function from JavaScript

我想从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);
    }
?>

通过使用+ ,您试图将参数转换为数字并将它们加在一起。 对于字符串连接,您需要. 代替+

echo $_POST['arguments'][0] . " " . $_POST['arguments'][1];

但是,正如Rayon在评论中指出的那样 ,结果将得到无效的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成功中使用警报。 所以我在json_encode函数中使用了带有结果索引的数组。

您在json_encode php中回显的值可以在ajax成功中获得。

使用控制台日志

console.log(obj);

您将在obj中获得响应。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM