こんにちは、私はJSONを初めて使用します。私の質問は、JSONデータをAjaxを介してRESTful Webサービスに渡す方法です。
私を助けてください。
コードを試してみましたが、よくわかりません
マイインデックスページ
<script type="text/javascript">
$(document).ready(function(){
var uname = document.getElementById("uname").value();
var password = document.getElementById("pwd").value();
$('#ok').click(function(){
$.ajax({
url:'http://localhost:8090/LoginAuthRWS/rest/orders',
type:'post',
dataType: 'Jsondemo',
success: function(data) {
$('#name').val(data.name);
$('#email').val(data.email);
var JSONObject= {
"uname":uname,
"password":password
};
}
});
});
});
</script>
var JSONObject= {"uname":uname, "password":password };
var jsonData = JSON.parse( JSONObject );
var request = $.ajax({
url: "rest/orders",
type: "POST",
data: jsonData,
dataType: "json"
});
コードの問題:
.value
は関数ではなくプロパティですdata
of $.ajax
を渡したいJsondemo
のようなデータ型はありませんJSON
を使用する必要がありますdata
がJSONでない場合、$.parseJSON
を使用してJSONに変換できます完全なコード
$(document).ready(function(){
$('#ok').click(function(){
var uname = document.getElementById("uname").value;
var password = document.getElementById("pwd").value;
var JSONObject= {
"uname":uname,
"password":password
};
$.ajax({
url:'http://localhost:8090/LoginAuthRWS/rest/orders',
type:'post',
data : JSONObject,
dataType: 'JSON',
success: function(data) {
var jsonData = $.parseJSON(data); //if data is not json
$('#name').val(jsonData.name);
$('#email').val(jsonData.email);
}
});
});
});
あなたはこのようなことをしたいです:
$('#ok').click(function(){
$.ajax({
url:'http://localhost:8090/LoginAuthRWS/rest/orders',
type:'post',
dataType: 'json',
data: { name: "John", location: "Boston" }
success: function(data) {
response = $.parseJSON(data);
$('#name').val(response.name);
$('#email').val(response.email);
}
});
});
注意すべきいくつかの点:
dataType
は、ほとんど常にxml
またはjson
でなければなりません。何も指定しないと、JQueryが正しく推測できる場合があります。しかし、それは本物である必要があります。data
にあるものです。データの種類がdataType
の値と一致することに注意してください。また、 $.post
メソッドを使用して、JQueryではるかに簡単な投稿を行うことができます。data
型であるため、成功コールバックへのPlainObject
パラメーターは、最初にJSONとして解析する必要があります(これが返されるものと想定)。それが$.parseJSON
します。これを実行したら、必要に応じてJSONツリーをナビゲートして必要な操作を実行できます。あなたはそれをしなくても逃げることができるかもしれません。お役に立てば幸いです。
可能なdataType
値:xml
、json
、script
、またはhtml
これを試してください:
var dataToServer = {
uname : document.getElementById("uname").value,
document.getElementById("pwd").value
};
$.ajax({
url:'http://localhost:8090/LoginAuthRWS/rest/orders',
type:'post', // or put
contentType: 'application/json', // type of data
data: JSON.stringify(dataToServer) // make JSON string
dataType: 'json', // type of return result
success: function(data) {
$('#name').val(data.name);
$('#email').val(data.email);
}
});
値をWebサービスに渡すには、Ajaxにdata属性があります。
<script type="text/javascript">
$(document).ready(function(){
var uname = document.getElementById("uname").value;
var password = document.getElementById("pwd").value;
$('#ok').click(function(){
$.ajax({
url:'http://localhost:8090/LoginAuthRWS/rest/orders',
type:'post',
dataType: 'Json',
data:{
uname:uname,
password:password
},
success: function(data) {
$('#name').val(data.name);
$('#email').val(data.email);
}
});
});
});
</script>
次のように、jsonデータをリクエスト本文として渡すことができます。
var JSONObject= {"uname":uname, "password":password };
$.ajax({
url : env + 'rest/orders',
type : 'POST',
headers: {
'Content-Type':'application/json'
},
data : JSON.stringify(JSONObject),
dataType : "json",
});