我长期以来一直在使用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元素状态或消息?
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);
}
?>
答案 0 :(得分:0)
alert()
打印参数的字符串表示 - 因此如果你传递一个对象,你将获得[object Object]
您可以使用JSON.stringify()
内部警报获取正确的输出
更好的方法是console.log
结果,而不是使用alert
<强>加成强>
检查此工作fiddle,显示正确的输出,其中小提琴的情况应为空白对象。