jQuery + ASP.NET Web Service : data.d or not d?

之前講過,當使用jQuery CallBack ASP.NET Web Service後,假設Data部份,我用”response”做名稱的話,我便可以用each()方法去extract “response”的values.

ASP.NET 2.0的做法:

1. $.each(Sys.Serialization.JavaScriptSerializer.deserialize(response), function(key, item) {
2. alert(item.ProductModel + ' / ' + item.Description);
3. });

以上做法本應是沒有錯誤的,但如果是ASP.NET 3.5的情況下,便會出現錯誤 :

1. "Sys.ArgumentTypeException: Object of type 'Object' cannot be converted to type 'String'.
2. Parameter name: data"


即使你使用的不是deserialize()方法,而是eval(),都會出現undefined.

 

這問題搞了我兩天,因為我公司是用ASP.NET 2.0平台,而我家中是3.5平台。程式碼肯定就沒有問題,因為Web Service部份已經設定return成string,而一直都不為意3.5的Web Service會override return的DataType。幸好在Firebug發現了奇妙的”d” :

ASP.NET 2.0, 在Firebug顯示的return values (response) , 在IE8的Develper Tools顯示DataType為String。

 

 

ASP.NET 3.5, 在Firebug顯示的return values (response) , DataType為Object,底下還有”d”的member。

所以最後觸發到我用”response.d”去得出string的值。上網找找”d”是什麼東西,原來也有人遇到同樣問題。
A breaking change between versions of ASP.NET AJAX | Encosia
特別要看看這個comment,完美解釋”d”是什麼東西:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值