Tôi có một chức năng CFC ColdFusion như thế này:Làm thế nào tôi có thể gửi một biến mảng đến một phương thức từ xa Coldfusion CFC thông qua ajax bằng cách sử dụng jQuery?
<cffunction access="remote" name="getResults"
returntype="struct"
returnformat="JSON"
output="no">
<cfargument name="q" required="true" type="array" />
...
</cffunction>
Làm thế nào để gọi chức năng này từ jQuery? Cả hình thức mã hóa mảng của jQuery đều không nhận được Coldfusion để xem giá trị như mảng.
Nếu bạn vượt qua "q = a & q = b" (giống như jQuery.ajaxSettings.traditional = true), hàm sẽ nhận được chuỗi "a, b" chứ không phải mảng. Trong khi tách trên dấu phẩy có vẻ giống như một khả năng, nó sẽ không hoạt động nếu một trong các giá trị "q" chứa dấu phẩy. Ngoài ra, lý tưởng, chức năng ở phía máy chủ không cần phải nhận thức được các vấn đề về cách tuần tự hóa dữ liệu qua dây và phải tiếp tục tham gia vào một mảng.
Nếu bạn vượt qua "q [] = a & q [] = b" (mặc định jQuery), nó sẽ không ánh xạ tới tham số "q". Nếu bạn cố gắng thay đổi tên của tham số "q" thành "q []", CFC sẽ bị lỗi do tên tham số không hợp lệ.
Vâng, tôi muốn nói rằng jQuery không mã hóa mảng, chỉ không theo cách mà ColdFusion có thể chấp nhận. Theo mặc định trong jQuery 1.4.3, các mảng được mã hóa theo kiểu tương thích với PHP và Ruby on Rails, bằng cách cung cấp nhiều tham số, với tên tham số thêm "[]" vào tên biến. Sử dụng cài đặt "truyền thống", nó mã hóa chúng giống như một biểu mẫu HTML cho nhiều hộp kiểm, chỉ cần gửi nhiều tham số. Cách tiếp cận của bạn để tìm ra điều này phù hợp với tôi. Cảm ơn bạn đã gửi mã mẫu chi tiết! – jrduncans
Tôi đang gặp vấn đề tương tự với bài đăng hôm nay từ Angular 4 đến CF10. công việc 'argumentCollection' vẫn hoạt động. Gửi một mảng JSON như một đối số biểu mẫu thì không. Cần lưu ý rằng việc thay đổi kiểu đối số CFC từ 'mảng' thành' bất kỳ' sẽ cho phép mã CFC xử lý đối số dưới dạng một mảng với công việc đối sốCollection xung quanh. – JeffryHouser