我已经设置了一个mongo数据库。现在我的数据库中只有一个id。我正在尝试使用ajax get请求获取我的javascript文件中的数据(使用ImpactJS引擎)。
以下是我的数据库现在的样子。它在mongo db上。非常基本的测试目的
{
"_id": "5303a4d4c4fd447a0a7fb528",
"__v": 0,
"ans": "ans",
"hint": "Hints.",
"score": 20,
"name": "ABC",
"pid": 1
}
然后我在我的javascript文件中使用Ajax请求从数据库中获取“ans”字段。以下是我的相同代码
getQuestionAnswer:function(){
var requestURL = "http://128.2.238.182:3000/problem?pid=".concat(this.passedQsId);
var answer;
$.ajax({
type:'GET',
url: requestURL,
async: false,
dataType: 'json',
cache: false,
success: function(data) {
answer = data.ans;
},
error: function(data) {
answer = "<p>ERROR</p>";
}
})
return answer;
},
URL正确传递,我在我的日志上仔细检查了它。但是,当我尝试在我的其他函数中使用此请求函数时,我得到infinte数量的错误,说“NS ERROR FAILURE”或其他东西。下面是我收到错误消息的代码行
checkAnswer: function(id){
var correctAnswer = this.getQuestionAnswer();
}
任何帮助将不胜感激。我对javascript和网络编程一般都是新手。这对我来说是一个挑战,因为我主要用Java,C ++编写代码!
答案 0 :(得分:1)
为评论获得一点点大小 - 这里有一些要在函数中排序的东西
getQuestionAnswer:function(){
var requestURL = "http://128.2.238.182:3000/problem?pid=".concat(this.passedQsId);
var answer;
$.ajax({
type:'GET',
url: requestURL,
dataType: 'jsonp', /* different domains often require jsonp */
cache: false,
success: function(data) {
console.log(data); /* check */
answer = data.ans;
return answer; /* needs to be here */
},
error: function(xhr, status, error) {
console.log(xhr);
answer = "<p>ERROR</p>";
return answer; /* needs to be here *
}
});
/* ^ semi colon ending here */
/* return answer; */
/* removed - will not return the 'answer'
as the function is now Asynchronous */
},
更新以示例查看更广泛的功能和示例callback
var answerfunctions = {
getQuestionAnswer : function(callback){ /* here accepts the callback function */
var requestURL = "http://128.,,etc";
var answer;
$.ajax({
type:'GET',
url: requestURL,
dataType: 'jsonp',
cache: false,
success: function(data) {
callback(data.ans);
},
error: function(xhr, status, error) {
console.log(xhr);
callback("ERROR");
}
});
}
};
/* call the function and pass a function as an argument to callback to */
answerfunctions.getQuestionAnswer(function(datareturn) { alert(datareturn); });