javascript http请求回调处理

时间:2017-06-25 06:36:59

标签: javascript ajax

我长期以来一直在使用Jquery Ajax功能。最近想到回到纯粹的javascript深度学习&提高绩效。

我正在使用以下方法来获取http请求的响应。

Ajax(baseurl + datastring, myFunction1);

以下基于回调的功能

function Ajax(url, cFunction) 
{
    var xhttp;
    xhttp = new XMLHttpRequest();
    xhttp.onreadystatechange = function() {
        if (this.readyState == 4 && this.status == 200) {
            cFunction(this);
        }
    };
    xhttp.open("POST", url, true);
    xhttp.send();
}

然后在此函数中使用回调

function myFunction1(xhttp) {
  alert(xhttp);
  document.getElementById("demo").innerHTML = this.responseText;
  var myObj = JSON.parse(JSON.stringify(xhttp));
  alert(myObj);
  document.getElementById("demo").innerHTML = xhttp;
}

在回调函数的第一个警报中" myFunction1 "我收到回复,因为第二个警报响应中的 [object XMLHttpRequest] [object Object] 。 我的问题是附加图像显示记录已成功插入数据库,但为什么我无法获取json输出responsetext元素状态消息

enter image description here

使用console.log(xhttp);的控制台日志 enter image description here

PHP脚本

<?php
require_once "Local.php";
require_once "class.db.php";
$dbc = new DB();

if(!empty($_POST))
{
    $_POST = filter_input_array(INPUT_POST, FILTER_SANITIZE_STRING);
    foreach( $_POST as $key => $value ) { $_POST[$key] = $dbc->filter( $value ); }

    $sfn = $dbc->escape($_POST['sfn']);
    $ssn = $dbc->escape($_POST['ssn']);
    $smn = $dbc->escape($_POST['smn']);
    $sg = $dbc->escape($_POST['sg']);
    $sem = $dbc->escape($_POST['sem']);
    $spass = $dbc->escape($_POST['spass']);

    $check_user = array('email' => $sem);    
    $exists = $dbc->exists( 'tablename', 'email',  $check_user );   
    if( $exists )
    {
        $response['status'] = 'failure';
        $response['message'] = 'Email ID you are trying to use is already occupied by someone else.';   
    }
    else
    {
        $salt = generateSalt();
        $hash = hash_hmac("sha256", $spass, $salt);

        $names = array('fname' => $sfn, 'lname' => $ssn, 'mobile_no' => $smn, 'gender' => $sg, 'email' => $sem, 'salt' => $salt, 'hash' => $hash );
        $add_query = $dbc->insert('tablename', $names);
        if($add_query)
        {               
            $_SESSION['username'] = $sfn;

            $response['status'] = 'success';
            $response['message'] = 'Succesful Registration';
        }else{
            $response['status'] = 'failure';
            $response['message'] = 'Something unexpected happened while processing your request. Please try once again.';   
        }
    }
    echo json_encode($response); 
}
?>

1 个答案:

答案 0 :(得分:0)

alert()打印参数的字符串表示 - 因此如果你传递一个对象,你将获得[object Object]

您可以使用JSON.stringify()内部警报获取正确的输出

更好的方法是console.log结果,而不是使用alert

<强>加成

检查此工作fiddle,显示正确的输出,其中小提琴的情况应为空白对象。