【发布时间】:2012-06-19 13:41:47
【问题描述】:
我正在 jQuery 中运行这个 getJSON 异步调用,以将数据取回并从我的 Java 代码中取出。无论出于何种原因,我不断收到错误:
"Ajax Error: Error invoking generateSearchQuery([object Object])"
我已经调试了 jQuery 和 Java 代码。 Java 代码接收 JSON 数据,对其进行处理,然后毫无问题地将其写回。 jQuery 代码在进入内部 getJson 方法并尝试 if(json.successful) 时将错误踢出。
回复是:{"error":{"message":"","title":"Error Generating Search Query"},"data":[Ljava.lang.String;@1e40c9f,"successful":"successful"}
我已经处理这个异步调用几天了,但仍然无法让它工作。有什么想法吗?
jQuery 函数:
generate : function(){
getJson(
Search.guid,
"generateSearchQuery",
{
"data": [
"val0",
"val1",
"val2",
"val3",
"val4"
]
}, function(json) {
Search.data = $.parseJSON(json.data);
$.each(Search.data, function(k, v){
$('#searchQuery').append(v + "\n");
});
});
},
Java 函数:
@AsyncService(name = "generateSearchQuery", permission = "")
public void generateSearchQuery(HttpServletRequest req, HttpServletResponse res) {
res.setHeader("Cache-Control", "no-cache");
JSONResult result = new JSONResult("Error Generating Search Query");
String[] arr = req.getParameterValues("data[]");
for(int i = 0; i< arr.length; i++){
arr[i] = "success"+i+"!";
}
result.put("data", arr);
try {
res.getWriter().print(result);
} catch (IOException e) {
// whatever
}
}
}
getJson:
function getJson(guid, service, parms, callback) {
beginWork();
$
.ajax( {
url : document.URL,
type : 'GET',
data : parms,
cache : 'false',
dataType : 'json',
headers : {
'framework-guid' : guid,
'async-service' : service
},
success : function(json) {
endWork();
if (json.successful) {
callback(json);
} else {
error(json.error && json.error.title ? json.error.title
: 'No Title Provided', json.error
&& json.error.message ? json.error.message
: 'No message provided for service ' + service);
}
},
error : function(jqXHR, textStatus, errorThrown) {
endWork();
error('Ajax Error', 'Error invoking ' + service + '('
+ parms + ')');
}
});
}
【问题讨论】:
-
Stack Overflow is not a debugging service你应该尝试调试代码,然后找到问题所在,提出具体问题。
-
可能是因为你有
getJSON而不是$.getJSON? -
什么是
getJson?那是$.getJSON的包装吗?$.getJSON只需要 3 个参数,它还会为你解析 JSON(不需要$.parseJSON)。 -
@gdoron,我一直在调试它。一切似乎都运行良好,直到它进入 jQuery 的 getJSON 方法进行检查:
if (json.successful) {然后抛出错误,然后运行我的 Java 代码,但没有将结果传递回 jQuery 端。 -
响应是什么样的。把它放在页面上。使用 Fiddler 之类的工具来获取响应。
标签: java javascript jquery json jsp