7

嗨,我是 JSON 新手。我的问题是如何通过 ajax 将 JSON 数据传递给 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>  
4

6 回答 6

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

var request = $.ajax({
  url: "rest/orders",
  type: "POST",
  data: jsonData,
  dataType: "json"
});        
于 2013-10-24T21:00:58.683 回答
4

您的代码存在问题:

  • .value是属性而不是函数
  • 你想通过 jsondata使用$.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);  
                }  
        });  
    });  
});      
于 2013-10-24T05:00:15.777 回答
1

jQuerydataType参考

可能的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);  
  }  
});  
于 2013-10-24T05:02:46.750 回答
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所述。就是这样。完成此操作后,您可以根据需要导航 JSON 树以执行您需要执行的操作。不过,您可能无需这样做就可以逃脱。$.parseJSON

希望有帮助。

于 2013-10-24T04:58:46.910 回答
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>  
于 2013-10-24T05:04:30.307 回答
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",
    });
于 2017-08-02T11:47:41.170 回答