echo posted json data in server php

醉酒当歌 提交于 2019-12-12 03:59:08

问题


The json sent to server php file as post request from ibm worklight Http adapter not accessible even after decoding:
Here are the codes:

Http adapter:

function storeRegistrationData(emailVal, passVal, fname1, gender, phone, userType, vehType) {
    var credentials = JSON.stringify({jemailVal: emailVal, jpassVal: passVal, jfname1: fname1, jgender: gender, jphone: phone, juserType : userType, jvehType : vehType});

    var input = {
        method : 'post',
        returnedContentType : 'json',
        path : "/carbikepooling/index.php",
        parameters: {credentials: credentials}
    };
    return WL.Server.invokeHttp(input);
}

Server php code:

$jsonObj = (isset($_POST['credentials']) ? $_POST['credentials'] : null);
        $credentials = json_decode($jsonObj);
        $email = $credentials->jemailVal;
        $pass  = $credentials->jpassVal;
        $uname = $credentials->jfname1;
        $gender = $credentials->jgender;
        $phone = $credentials->jphone;
        $usertype = $credentials->juserType;
        $vehtype = $credentials->jvehType;
        $boolean = false;
        $userId; $userTypeId;

        // sanitation, database calls, etc

        $connection = mysqli_connect("localhost","root","","carbikepooling");


                     if (mysqli_connect_errno($connection))
                     {
                      echo "Failed to connect to MySQL: " . mysqli_connect_error();
                     }

                    mysqli_query($connection,"insert into userInfo values(0,".$email.",'".$pass."','".$uname."','".$gender."','".$phone."')");

                        $result1 = mysqli_query($connection, "select u.userId from userInfo u order by u.userId desc limit 1");

                        if($result1){
                            $row1 = mysqli_fetch_row($result1);
                            $userId = $row1[0];
                            mysqli_query($connection,"insert into userType values(0,".$userId.",'".$usertype."')");
                            $result2 = mysqli_query($connection, "select t.userTypeId from userType t order by t.userTypeId desc limit 1");

                            if($result2){
                                    $row2 = mysqli_fetch_row($result2);
                                    $userTypeId = $row2[0];
                                    mysqli_query($connection, "insert into vehicleType values(0,".$userTypeId.",'".$vehtype."')");
                                    $boolean = true;
                                }
                        }

                    mysqli_close($connection);  

        $returnData[] = array(
            'boolean' => "$boolean"
        );

        echo json_encode($returnData);
?>

Javascript code to show return result from server php:

function storeFormData(emailVal, passVal, fname1, gender, phone, userType, vehType){

    var invocationData = {
            adapter : 'registerUser',
            procedure : 'storeRegistrationData',
            parameters : [emailVal, passVal, fname1, gender, phone, userType, vehType]
    };

    WL.Client.invokeProcedure(invocationData, {
        onSuccess : storeFormDataSuccess,
        onFailure : storeFormDataFailure,
    });
}

function storeFormDataSuccess(result){
    WL.Logger.debug('Data stored Successfully');
    alert(JSON.stringify(result.invocationResult));
}

function storeFormDataFailure(result){
    WL.Logger.error('Error in storing Data');
}

What happens is that when I used decoded json data in server php file in the insert statements, nothing happens. I tried echoed values of email, gender, etc. but nothing prints as if they contain no values. However, if I sent the decoded json values of email, gender etc. in the returnData array as they are used in insert statements, values successfully received by the app which made the request, i.e: shown those values in the alert in the js code.
Please solve this problem?


回答1:


Hmm, that is strange. I copied and pasted your exact code and I was able to echo the variables that were passed from the Worklight adapter. Maybe the way you are trying to use the variables for your sql statements is wrong?

Can you change your mysql query to look something more like this?

mysqli_query($connection, "insert into vehicleType values(0, '$userTypeId','$vehtype')");

Notice how I've removed the concatenation '.' from the query and I now I just have the variables surrounded by single quotes.



来源:https://stackoverflow.com/questions/20596166/echo-posted-json-data-in-server-php

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!