这是我的PHP函数,用于存储一些数据:
case "start_question":
$user_id = "123";
$p_id = $_POST[""];
$question_id = $_POST["question_Id"];
$answer = $_POST["answer_String"];
$counter = $_POST["counter"];
$points = $_POST["answer_Points"];
$user = new User($uid);
$user ->end_question($p_id,$user_id,$question_id,$answer,$counter,$points);
echo "Hello World";
break;
}
这是JS Ajax调用:
function startQuestion(){
var question_Id = questions_array[question_counter].question_Id;
console.log("Start Question",question_Id);
var ajax = new XMLHttpRequest();
var params = 'question_Id=' + question_Id;
ajax.open("POST", "ajax_controller.php?m=start_question", true);
ajax.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
ajax.send(params);
ajax.onreadystatechange = function () {
console.log(response);
var response = "";
if (xmlHttp.readyState == 1) {
response += "Status 1: Server connection established ! <br/>";
} else if (xmlHttp.readyState == 2) {
response += "Status 2: Request recieved ! <br/>";
} else if (xmlHttp.readyState == 3) {
response += "Status 3: Processing Request ! <br/>";
} else if (xmlHttp.readyState == 4) {
if (xmlHttp.status == 200) {
var text = xmlHttp.responseText;
response += "Status 4: Processing Request ! <br/>";
response += text;
} else {
alert("Something is wrong !");
}
}
}
//If an error occur during the ajax call.
if (ajax.readyState == 4 && ajax.status == 404) {
console.log("Error during AJAX call");
}
}
[我想做的是在PHP完成处理结果后,在控制台上登录” Hello World”响应。
PS:实际上,我想使用参数“ hello world”来触发一个函数,但是如果我想出了如何获取响应,那么这样做很简单。
基本上,它可能只是您没有完全检查过的复制/粘贴中的错字。
您的XMLHttpRequest()对象称为ajax
,而不是xmlHttp
,因此您从ajax对象而不是xmlHttp中获取responsea和readyState。
此外,在您告诉XMLHttpRequest对象接收到的Respose之后,应该移动ajax.send(params);
以使其运行。
function startQuestion(){
var question_Id = questions_array[question_counter].question_Id;
console.log("Start Question",question_Id);
var ajax = new XMLHttpRequest();
var params = 'question_Id=' + question_Id;
ajax.open("POST", "ajax_controller.php?m=start_question", true);
ajax.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
ajax.onreadystatechange = function () {
console.log(response);
var response = "";
if (ajax.readyState == 1) {
response += "Status 1: Server connection established ! <br/>";
} else if (ajax.readyState == 2) {
response += "Status 2: Request recieved ! <br/>";
} else if (ajax.readyState == 3) {
response += "Status 3: Processing Request ! <br/>";
} else if (ajax.readyState == 4) {
if (ajax.status == 200) {
var text = ajax.responseText;
response += "Status 4: Processing Request ! <br/>";
response += text;
} else {
alert("Something is wrong !");
}
}
}
//If an error occur during the ajax call.
if (ajax.readyState == 4 && ajax.status == 404) {
console.log("Error during AJAX call");
}
ajax.send(params);
}
不清楚是什么问题...
[xmlHttp.readyState == 4
在请求完成后即PHP完成处理您的请求时触发。
如果仅在xmlHttp.readyState == 4
中执行操作该怎么办?
似乎您的回复文本存储在xmlHttp.responseText
中,因此您可以使用:
if (xmlHttp.status == 200) {
console.log(xmlHttp.responseText);
/* ... */
}
xmlHttp
]似乎未定义。尝试将其替换为实际的ajax对象:if (ajax.readyState == 1){ ... }
ajax.send(params);
放在ajax.onreadystatechange = function () {/*...*/}
之后; var text = xmlHttp.responseText;
response += "Status 4: Processing Request ! <br/>";
response += text;
/**********************/
console.log(response)
/**********************/