Làm thế nào tôi có thể gửi một đối tượng JSON đến một webmethod bằng cách sử dụng jQuery?Gửi JSON tới webmethod?
Trả lời
Vui lòng tham khảo this bài viết của Dave Ward. Đây là một hướng dẫn hoàn chỉnh về cách thực hiện công cụ này. Ngoài ra, bạn sẽ tìm thấy những thứ jquery/ASP.net tuyệt vời khác.
EDIT: - Dave đang kêu gọi phương pháp mà không cần bất kỳ đối số, bạn có thể thay thế trống dữ liệu tài sản với số liệu thực tế mà bạn muốn gửi:
$.ajax({
type: "POST",
url: "Default.aspx/GetDate",
data: "{'name':'tiger1','hobbies':['reading','music']}",//PUT DATA HERE
contentType: "application/json; charset=utf-8",
dataType: "json",
Bạn sẽ cần phải gửi nó sử dụng Ajax và chấp nhận chuỗi đến trên webmethod. Sau đó, bạn cần phải sử dụng trình khử JavaScript để chuyển đổi nó thành một đối tượng ở phía máy chủ.
Tôi nghĩ rằng anh ấy hỏi làm thế nào để biến đối tượng JavaScript thành một chuỗi JSON để gửi cùng với webmethod đã nói. – ceejayoz
WebMethods mong đợi một chuỗi chứa JSON mà sẽ được phân tích trên server-side, tôi sử dụng JSON.stringify
chức năng để chuyển đổi một thông số đối tượng chuỗi, và gửi dữ liệu, tôi có một chức năng như thế này:
jQuery.executePageMethod = function(location, methodName, methodArguments,
onSuccess, onFail) {
this.ajax({
type: "POST",
url: location + "/" + methodName,
data: JSON.stringify(methodArguments), // convert the arguments to string
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function(data, status) {
var jsonData = JSON.parse(data.d);
onSuccess(jsonData, status);
},
fail: onFail
});
};
Tôi khuyên bạn nên bao gồm trình phân tích cú pháp json2.js trong các trang của mình để có sẵn trình duyệt chéo JSON.stringify.
+1 - trình bao bọc tốt –
Các giải pháp tiện lợi nhất mà tôi đã thấy đơn giản hóa điều này bằng cách sử dụng thư viện the open-source JSON2.js để phân tích cú pháp và 'xâu chuỗi' dữ liệu đối tượng phức tạp.
Hai bài báo xuất sắc đi vào chi tiết:
Using complex types to make calling services less… complex bởi Dave Phường.
JavaScript Arrays via JQuery Ajax to an Asp.Net WebMethod bởi Chris Brandsma.
Bài báo thứ hai có thể là đặc biệt thích hợp cho bạn, mặc dù nó gọi một trang web dịch vụ phương pháp với chữ ký sau đây ...
public void SendValues(List<string> list)
... nó thể hiện như thế nào để sử dụng thư viện JSON2.js để hiển thị một List<string>
trong javascript (sử dụng jQuery, ví dụ này được lấy trực tiếp từ bài viết thứ hai):
var list = ["a", "b", "c", "d"]; var jsonText = JSON.stringify({ list: list }); // The 'list' is posted like this $.ajax({ type: "POST", url: "WebService1.asmx/SendValues", data: jsonText, contentType: "application/json; charset=utf-8", dataType: "json", success: function() { alert("it worked"); }, failure: function() { alert("Uh oh"); } });
Chỉ cần sử dụng URL webmethod thay cho dịch vụ web.
Một thư viện khác mà bạn có thể sử dụng là jquery-json
library. Khi được bao gồm:
var json = $.toJSON(your_object);
Ooh, cảm ơn vì điều này. Phiên bản được rút gọn là ~ 2k, và nó tích hợp tốt với jQuery (hiển nhiên), điều này rất hay nếu bạn đã sử dụng nó (mà tôi đang sử dụng). –
JSON.stringify không giúp đỡ, nhưng:
nó không phải qua trình duyệt hãy xem ở đây: http://www.sitepoint.com/blogs/2009/08/19/javascript-json-serialization/#
Đối với trình duyệt trong xây dựng chức năng - mỗi trình duyệt sẽ có vấn đề của nó. Nếu bạn sử dụng serialization trên Bạn sẽ cần phải:
- loại bỏ dòng mới với regexp trong chuỗi
- nâng niu mang về "trong chuỗi
Mẫu mã là ở đây:
var dataString = JSON.stringify({
contractName: contractName,
contractNumber: contractNumber
});
$.ajax({
type: "POST",
url: "CreateQuote.aspx/GetCallHistory",
data: dataString,
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function (result) {
alert(result.CallHistoryDescription);
OpenLightBox('divDelete');
}
});
[System.Web.Services.WebMethod]
public static object GetCallHistory(string contractName, string contractNumber)
{
return new
{
CallHistoryDescription = "Nalan"
};
}
Có bắt buộc phải vượt qua contractName trước và sau đó contractNumber trong khi tạo JSON, bởi vì đôi khi tôi không chắc chắn trong đó tham số tuần tự sẽ đến, vì các kịch bản lệnh phía máy khách động –
- 1. Gửi JSON tới PHP bằng ajax
- 2. Gửi tệp tới API JSON Rails
- 3. Gửi yêu cầu gửi tới WCF RESTful với json
- 4. Truyền tham số tới WebMethod với jQuery Ajax
- 5. Gửi JSON tới URL qua WebClient trong C#
- 6. Gửi mảng tới bộ điều khiển MVC qua JSON?
- 7. gửi JSON ngày tới google charts API từ Perl
- 8. Định dạng JSON (Gửi JSON qua bài đăng AJAX của jQuery tới máy chủ Java/Wicket)
- 9. Chuyển một đối tượng được định nghĩa bởi người dùng tới ASP.NET Webmethod từ jQuery, bằng cách sử dụng JSON
- 10. WebMethod vs ScriptMethod
- 11. Gửi ByteArray tới JavaScript
- 12. Gửi PDF tới iBooks
- 13. Gửi từ Angular tới .net WebAPI
- 14. LoadControl, usercontrol trong WebMethod
- 15. ASP.NET Custom Validator + WebMethod + jQuery
- 16. Truy cập webmethod với jquery
- 17. Gửi tới khay trên Đóng
- 18. jqgrid howto gửi tất cả rowData ở định dạng json tới máy chủ?
- 19. Gửi yêu cầu AJAX tới trang .aspx và trả về JSON
- 20. làm cách nào tôi có thể gửi email json + ld schema.org tới chính tôi trong gmail
- 21. Gửi dữ liệu JSON tới PHP bằng cách sử dụng XMLHttpRequest w/o jQuery
- 22. Cách gửi yêu cầu JSON tới dịch vụ REST của Jersey?
- 23. Gọi 'WebMethod' với jQuery trong ASP.NET WebForms
- 24. Chuỗi JSON tới đối tượng JS
- 25. Gửi json đến hành động MVC3
- 26. gửi đối tượng json với httparty
- 27. chuyển dữ liệu JSON tới bộ điều khiển Spring MVC
- 28. nhập tệp json tới chiếc ghế db-
- 29. POJO tới JSON trong khung chơi
- 30. gửi bài JSON đến controller
+1 - Tôi nghĩ chủ đề này và bài viết cụ thể đó sẽ tiếp tục xuất hiện trong một thời gian :) –
Có @Russ Dave đã cho thấy ánh sáng không biết có bao nhiêu nhà phát triển. – TheVillageIdiot
Bạn có chắc chắn rằng mảng sở thích được truyền như bạn mong đợi không? –