これに似たWebサービスメソッドがあります:
@Path("/insert_update")
@POST
@Consumes({ MediaType.APPLICATION_JSON })
@Produces({ MediaType.APPLICATION_JSON })
public Object insert(User obj) {
...(insert and return object)
}
そして、ajaxを使用してjqueryからこのメソッドを呼び出したいです。私はこのようなことを試しました:
var rootURL = "http://Path/to/my/web/service";
function insertUpdate() {
var user = {'name' : $("#name").val(),
'surname' : $("#surname").val(),
'surname1' : $("#surname1").val(),
'usertxt' : $("#usertxt").val(),
'password' : $("#password").val() };
$.ajax({
url : rootURL + "/insert_update",
type : "POST",
contentType: 'json',
dataType : "json",
data : user,
success : function(data) {
alert(JSON.stringify(data));
},
error : function(data) {
}
});
}
このコードは正しいですか? 使用しようとすると、次の応答が返されます。
リソースの読み込みに失敗しました: 要求ヘッダー フィールドの Content-Type は、Access-Control-Allow-Headers によって許可されていません。XMLHttpRequest を読み込めません ... . 要求ヘッダー フィールド Content-Type は、Access-Control-Allow-Headers では許可されていません。
あなたが私を助けてくれることを願っています。
ご挨拶。
アップデート
Web サービスは同じマシンにありますが、別のポートにあります。WebSphere Application Server で Web サービス プロジェクトを実行し、HTML ファイルを開いてコードをテストするだけです。
次のように、問題のない他の方法があります。
@Path("/all")
@GET
@Produces(MediaType.APPLICATION_JSON)
public Object all() {
...(get all users)
}
そして、このコードの JQuery メソッド:
function all() {
$.ajax({
url : rootURL + "/all",
type : "GET",
dataType : "json",
success : function(data) {
$("#tabla tbody:last").empty();
$.each(data.data, function(i, item) {
$("#tabla tbody:last").append("<tr><td>"+item.id+"</td><td>"+item.name+
"</td><td>"+item.surname+"</td><td>"+item.surname1+"</td><td>"
+item.usertxt+"</td><td>"+item.password+"</td></tr>");
});
},
error : function(data) {
}
});
}
これは問題なく動作しますが、問題はありません...しかし、ローカルでテストするには Chrome の拡張機能Allow-Control-Allow-Originをダウンロードする必要がありました。
GET メソッドでは問題がなく、POST メソッドでは問題がないのはなぜですか???
ご挨拶。