从JavaScript调用PHP函数没有输出

时间:2015-12-27 07:54:08

标签: javascript php

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

2 个答案:

答案 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);

您将在对象中获得回复。