【发布时间】:2017-08-05 02:46:20
【问题描述】:
我正在处理一个文件以与 API 交互。首先 API 发送一些 HTML 和 Javascript 来创建搜索表单,然后 API 可以处理该搜索表单的查询。
我的第二个请求出现了一些问题,该请求在第一个请求的成功函数中调用(这似乎是问题所在!)。这是我正在使用的代码。
$.ajax({
type: "POST",
url: "https://vq3rsgkd94.execute-api.us-east-1.amazonaws.com/deploy",
crossDomain: true,
data: JSON.stringify({
"stage": "load",
"fields": ["first_name", "last_name", "graduation_year"]
}),
success: function(response) {
response = JSON.parse(response);
$(response.html).prependTo("#content");
$(response.scripts).appendTo("body");
},
complete: function() {
//get field inputs
var fieldInput = {
"first_name_query": "",
"last_name_query": "",
"graduation_year_query": ""
};
$('form').find('input[type=search]').each(function(index, value) {
var variableName = value.name;
var fieldId = "#" + value.name;
$(fieldId).keyup(function() {
variableName = $(this).val();
fieldInput[value.name + "_query"] = variableName
console.log(value.name + ":" + fieldInput[value.name + "_query"]);
})
.keyup();
});
$('#search_form').submit(function(event) {
event.preventDefault();
$.ajax({
type: "POST",
url: "https://vq3rsgkd94.execute-api.us-east-1.amazonaws.com/deploy",
data: JSON.stringify({
"stage": "search",
"fields": ["first_name", "last_name", "graduation_year"],
"query": {
"first_name": fieldInput["first_name_query"]
}
}),
success: function(response) {
response = JSON.parse(response);
console.log(response);
}
});
})
}
});
尝试解析响应时,我得到了意外的令牌:o。如果我像这样在第一个 ajax 请求之外运行此代码:
$.ajax({
type: "POST",
url: "https://vq3rsgkd94.execute-api.us-east-1.amazonaws.com/deploy",
data: JSON.stringify({
"stage": "search",
"fields": ["first_name", "last_name", "graduation_year"],
"query": {
"first_name": "Bob"
}
}),
success: function(response) {
response = JSON.parse(response);
console.log(response);
}
});
我没有任何问题,代码执行正常。所以问题似乎是在另一个成功响应中运行一个 Ajax 调用,但我不知道为什么?我可能可以用另一种方式做事,但想看看是否有人对为什么这不起作用有所了解。
【问题讨论】:
-
为什么不做委托绑定? - api.jquery.com/on/#direct-and-delegated-events
-
如果是 JSON 的话,jQuery 会将它变成一个对象......
标签: javascript jquery json ajax post