2012-01-25 25 views
7

Tôi có một đối tượng javascript:Nhận Coldfusion để phân tích yêu cầu json

data = { color: red, day: monday, list: {1,2,3,4,5,6}} 

tôi chuyển thông tin này đến một trang Coldfusion sử dụng jQuery:

$.ajax({ 
       type: "POST", 
       url: "ajax_myPage.cfm", 
       data: JSON.stringify(data), 
       contentType: "application/json", 
       dataType: "json" }); 

Đây là cfdump tôi:

enter image description here

(danh sách "thực sự sẽ chứa danh sách email nhưng tôi chỉ đang thử nghiệm một địa chỉ ngay bây giờ)

Trong Coldfusion, tôi đang cố gắng để gán mỗi "phần" cho một biến:

<cfset requestBody = toString(getHttpRequestData().content) /> 
<!--- Double-check to make sure it's a JSON value. ---> 
<cfif !isJSON(requestBody)> 

<!--- Echo back POST data. ---> 
<h3>The URL you requested does not provide valid JSON</h3> 
<cfdump 
var="#requestBody#" 
label="HTTP Body" 
/> 
<cfelse> 
<cfset cfData=DeserializeJSON(requestBody)> 
<cfset color = cfData.color> 
<cfset day = cfData.day> 
<cfset myList = cfData.list> 
</cfif> 

Tuy nhiên tôi nhận được một lỗi với "danh sách",

Complex object types cannot be converted to simple values. 

Làm cách nào để phân tích cú pháp danh sách như Coldfusion?

Trả lời

12

tôi đã có thể gửi dữ liệu như một bài var,

data: { json: JSON.stringify(data) } 

và sau đó phân tách nó thành một biến:

<cfset structJSON = deserializeJSON(FORM.json)> 

Vào thời điểm đó, cfdump cấu trúc để kiểm tra nội dung của nó để bạn biết cách truy cập chúng.

Vì chúng tôi không biết cấu trúc json bạn đang chuyển đến ColdFusion bao gồm, tôi không có ý tưởng gì structJSON.list chứa hoặc tại sao nó sẽ ném một lỗi.

Chỉnh sửa: Ah tôi thấy cháu trai của bạn ngay bây giờ.

Danh sách của bạn không hợp lệ json, thay đổi {} đến [].

data = { color: "red", day: "monday", list: [1,2,3,4,5,6]} 
+0

Tôi hiểu ... đã thêm ảnh chụp màn hình của cfdump của tôi. – redconservatory

Các vấn đề liên quan