2012-10-17 30 views
0

ascx.cs無法呈現在客戶端的JSON字符串

protected string BindData() 
    { 
    List<Product> products = product.GetRepeaterData(prod); 
    string json = JsonConvert.SerializeObject(products); 
    return json; 
    } 

ASCX

<script type="text/javascript" language="javascript"> 
function doSomething() { 

    $.ajax({ 
     type: "POST", 
     url: "/ProgramListSimple.aspx/BindData", 
     data: "{}", 
     contentType: "application/json; charset=utf-8", 
     dataType: "json", 
     success: function (msg) { 
      alert(msg); 
     } 
    }); 
}; 

我不能看到任何警告..我不知道,如果AJAX功能是做什麼是假設要做...這個代碼是用戶控制&不在aspx頁面有什麼關係嗎?在調試時,我能夠看到json字符串中的序列化數據。它只是它不在客戶端渲染....從早上開始工作,現在我需要一些幫助,請。..任何示例或任何文檔也可以是有用的..

+1

使用'console.log()'而不是'alert()',您將能夠在調試器控制檯中看到整個JSON對象。 alert()只能顯示字符串。 – Blazemonger

+0

@Blazemonger不工作...即使在控制檯中我也看不到它 – Scorpio

+0

這表明'/ ProgramListSimple.aspx/BindData'正在返回一個空文件,然後''成功:函數(msg){console.log(msg) ); }'應該向你展示腳本通常會顯示的內容。 – Blazemonger

回答

1

我創建了一個新的aspx頁面。將邏輯後面的所有代碼轉換爲ascx.cs中的aspx.cs。剛剛使用Ajax回調稱爲aspx頁面的網址從我的ascx頁面

 type: "GET", 
     url:'<%=VirtualPathUtility.ToAbsolute("~/ProgramListSimpledetail.aspx") %>', 
     data: dataObject, 
     contentType: "application/json; charset=utf-8", 
     dataType: "json", 
     success: function (data) 

我只是說,這是非常重要的修復程序的一小部分,這對於其他工作,那麼這有一堆東西,那名添加到使ascx頁面繼承apsx頁面的屬性....但我認爲這主要與我的代碼有關...所以我希望這將有助於未來的人......感謝所有試圖貢獻的人。 。

1

您必須使用d屬性

alert(msg.d); 

如果您使用的是Chrome或Firefox瀏覽器進行調試使用以下方法來檢查JavaScript對象:

console.log("%o", msg); 

在Chrome中按下Ctrl鍵+ + J顯示開發者控制檯

+0

謝謝,讓我試試看... – Scorpio

+0

控制檯。日誌(「%o」,msg); ReferenceError:味精沒有被定義我在控制檯中得到了這個錯誤信息 – Scorpio

+1

你是否已經把'alert(「msg」)的**行放在那行**;''在'success'函數下面? – Jupaol

相關問題