![](/img/trans.png)
[英]500 internal server error on Tomcat7 while trying to do ajax getJson or post operation in jQuery + Struts2
[英]Ajax error when running jQuery getJSON
我正在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 + ')');
}
});
}
似乎來自服務器的響應的內容不是json格式。 因為您將$ .ajax的響應類型指定為json,所以需要將對象結果轉換為json。 您可以使用google gson http://code.google.com/p/google-gson/ ,並執行以下操作。
Gson gson = new Gson();
res.getWriter().print(gson.toJson(result));
在getJson中,您應該進行以下更改。
//before
Search.data = $.parseJSON(json.data);
//after
Search.data = json.data;
響應不正確!
我檢查了它,那里有一個無效的標簽Ljava.lang.String; @ 1e40c9f ,解析代碼時出現的錯誤是:
SyntaxError: invalid label
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.