如何通过ajax将JSON数据传递给restful web服务以及如何获取JSON数据?

时间:2013-10-24 04:49:58

标签: jquery ajax json rest

嗨,我是JSON的新手。我的问题是如何通过ajax将JSON数据传递给宁静的Web服务?

请帮助我。

我尝试了以下代码,但我不确定

MY INDEX PAGE

<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>  

6 个答案:

答案 0 :(得分:9)

var JSONObject= {"uname":uname, "password":password };
var jsonData = JSON.parse( JSONObject );    

var request = $.ajax({
  url: "rest/orders",
  type: "POST",
  data: jsonData,
  dataType: "json"
});        

答案 1 :(得分:4)

代码问题:

  • .value是属性而不是函数
  • 您希望传递data
  • 的json使用$.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);  
                }  
        });  
    });  
});      

答案 2 :(得分:1)

你想做这样的事情:

$('#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应该几乎总是xmljson。如果你不提供任何东西,有时JQuery可以正确猜测。但它必须是真实的东西。
  • 由于您正在发布帖子,因此需要将数据发送到REST端点。这就是我在data中所拥有的。请注意,数据类型与dataType中的值匹配。另请注意,您可以使用$.post方法使用JQuery做一个更简单的帖子。
  • 成功回调的data参数需要首先解析为JSON(假设回来的是什么),因为它的类型为PlainObject,如here所述。这就是$.parseJSON的作用。完成后,您可以根据需要导航JSON树以执行您需要执行的操作。尽管如此,你可能无法逃脱。

希望有所帮助。

答案 3 :(得分:1)

jQuery dataType Reference

可能的dataType值:xmljsonscripthtml

试试这个:

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);  
  }  
});  

答案 4 :(得分:1)

要将值传递给Web服务,Ajax具有数据属性。

<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>  

答案 5 :(得分:0)

您可以将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",
    });