2012-07-12 81 views
2

我已經實現了一個Jersey web服務,並且我想使用JQuery來訪問它。 看來,ajax()方法是我需要的。使用jQuery ajax訪問POST webservice

我按照找到的建議here,但我不斷收到錯誤,我不知道下一步該怎麼做。警告中出現的錯誤是[對象對象]

我已經使用Java客戶端和下面的curl命令測試了我的Web服務,並且在這兩種情況下它都返回了我所期望的(實際上服務只是修改了對象的屬性之一,並返回它,因爲我只是測試通信問題)

[email protected]:~/tools$ echo $DATA 
--data-binary {"endpoint":"endpoint","instance":null,"id":"idcube","schema":null} 
[email protected]:~/tools$ echo $HEADER 
--header Content-Type:application/json 
[email protected]:~/tools$ echo $URL 
http://localhost:8888/rest/cubes/get 
[email protected]:~/tools$ curl ${DATA} ${HEADER} ${URL} 

這裏是我的html頁面:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 
<title>QBplus: OLAP cubes in RDF</title> 
<link rel="stylesheet" type="text/css" href="css/style.css" /> 
<script src="js/jquery-1.7.2.min.js" type="text/javascript"></script> 
<script src="js/i18n/grid.locale-en.js" type="text/javascript"></script> 
<script src="js/jquery.jqGrid.min.js" type="text/javascript"></script> 

<script type="text/javascript"> 
$(function() { 
var baseURL = "http://localhost:8888/rest/cubes/get"; 
var postData ={id:'cube1', endpoint:'myendpoint',schema:'a schema',instance:'some instance'}; 
var pdataJSON=JSON.stringify(postData); 
$.ajax({ 
    type:'POST', 
    url: baseURL, 
    data:pdataJSON, 
    contentType: 'application/json; charset=utf-8', 
    dataType: 'json', 
    success: function (responseText) { 
     alert(responseText.d); 
    }, 
    error: function (error) { 
     alert(error); 
    } 
}); 
});//ready 
</script> 
</head> 
<body> 
    <h1>CUBES</h1> 
    <div id="cubes"></div> 
</body> 

任何幫助,將不勝感激!

問候,

洛雷娜

+0

顯然jQuery的字符串化給出像一些瀏覽器問題IE7。也許你根本不需要使用它。 – Stefan 2012-07-12 11:12:56

+0

'pdataJSON'未初始化。 – 2012-07-12 11:14:44

+1

「但我不斷收到錯誤,我不知道下一步該怎麼做」 你會得到什麼錯誤?發佈一些細節! – Anders 2012-07-12 11:22:22

回答

0

在pdataJSON前面放置一個變種來初始化它應該前進你。

var pdataJSON=JSON.stringify(postData); 
+0

是的,這是真的。瓦爾補充說,但仍然得到相同的錯誤 – lorenae 2012-07-12 11:20:27

0

看起來你有問題,你的數據:

var postData ={id:'cube1', endpoint:'myendpoint',schema:'a schema',instance:'some 
instance'}; 

替換爲:

var postData ={'id':'cube1', 'endpoint':'myendpoint','schema':'a 
    schema','instance':'some instance'}; 

試試這個

$.ajax({ 
    type: 'POST', 
    contentType: 'application/json', 
    url: rootURL, 
    dataType: "json", 
    data: JSON.stringify(postData); 
    success: function(data){ 
     alert(data.responseText); 

    }, 
    error: function(jqXHR, textStatus, errorThrown){ 
     alert('error: ' + textStatus); 
    } 
}); 
+0

謝謝@ user1042031。我遵循你的建議。我仍然得到一個錯誤(現在的消息是錯誤的:錯誤,不是很多信息是不是?),但現在請求出現在Firebug Net的角度。響應標題似乎沒問題,但響應標籤是空的 – lorenae 2012-07-12 12:08:33