2014-01-27 90 views
1

我想使用AJAX與ASP.NET的第一次 - 由試圖通過我的相應的aspx頁面下面的數據,以一個WebMethod:無法將數據傳遞到方法

$.ajax({ 
    type: "POST", 
    url: "myurl.aspx/SaveScreen", 
    data: "{'data': " + JSON.stringify(arrayRows.data) + "}", 
    contentType: "application/json; charset=utf-8", 
    dataType: "json", 
    success: function (msg) { 
     alert(msg.d); 
    } 
}); 

這裏是我的WebMethod在aspx頁面中。我試過傳遞一個簡單的數據對象,其中只包含一個鍵和值,這成功地工作。當試圖通過這個對象,我得到一個錯誤,指出存在與代碼500

什麼可能我是做錯了內部服務器錯誤?

+0

你絕對不應該連接字符串當一個對象定義可以用來代替。 Concats的可讀性要差得多。 –

+0

Web方法中的參數數據類型是什麼? –

回答

2

試試這個: data: {"data": JSON.stringify(arrayRows.data)}

+0

這是明智的解決方案,而不是連接字符串,我從你第一張貼了這個解決方案的其他編輯注意。 –

+0

我更喜歡連接字符串 - 謝謝! –

0

你可以換的數據串的語錄:

$.ajax({ 
    type: "POST", 
    url: "SpecifyPositioning.aspx/SaveScreen", 
    data: "{'data': '" + JSON.stringify(arrayRows.data) + "'}", //Added ' around JSON.stringify to pass string instead of object 
    contentType: "application/json; charset=utf-8", 
    dataType: "json", 
    success: function (msg) { 
     alert(msg.d); 
    } 
}); 

然而,這將是一個清潔的解決方案:

data: {"data": JSON.stringify(arrayRows.data)}, 
+0

這已經解決了這個問題,謝謝。是否可以傳遞數據而不需要串聯?如果是這樣,怎麼樣? –

+0

你不能傳遞一個'Array'到'WebMethod'直接就我知道的,所以'JSON.stringify'只更換我所知道的是'arrayRows.data.join()' –

+0

你後來添加的是明智的方式來做到這一點。將對象定義創建爲字符串(不需要時)會增加無意義的複雜層次。 –

0

試試這個:

data: "{data: '" + JSON.stringify(arrayRows.data) + "'}" 
+0

爲什麼downvote? – Plue

+0

雖然它「有效」,但爲對象定義創建字符串不僅毫無意義,而且會導致不良做法。最新的答案是正確的做法。然而,我看到有人同情你,並已上投...擊敗投票的整個目的:) –

+0

所以我應該用**數據:{「數據名」:stringValue的} **呢? – Plue

相關問題