2013-01-31 76 views
0

我想發送並返回一個簡單的字符串從JavaScript使用AJAX的VB.NET web方法。這裏是我使用的Javascript/jQuery腳本:傳遞並返回一個字符串到VB.NET Web方法

function jQuerySerial() { 
//I SET A VARIABLE TO THE STRING I WANT TO PASS INTO MY WEB METHOD 
var str = "Hello World"; 

//AND TRY TO PASS IT INTO MY VB.NET WEB METHOD 
$.ajax({ 
    type: "POST", 
    url: "test_WebService.asmx/testWebService", 
    data: str, 
    contentType: "application/json; charset=utf-8", 
    dataType: "json", 
    success: function (e) { 
     alert("It worked: " + e); 
    }, 
    error: function (e) { 
     alert("There was an error retrieving records: " + e); 
    } 
}); 
}//END jQuerySerial 

這裏是非常簡單的VB.net Web方法。 Web方法什麼也不做,但得到的字符串,然後傳回的Javascript:

<WebMethod()> _ 
Public Function testWebService(str As String) As String 
    Return str 
End Function 

當我試圖運行這個錯誤:功能火災和返回消息說:

"There was an error retrieving records: [object Object]" 

我有許多許多其他Web方法都在這個相同的Web服務類中,它們操縱數據庫記錄,並且它們都可以工作。但是,這是我第一次嘗試使用$ .ajax語法編寫,並將某些內容返回給調用Javascript,因此我對這裏的錯誤完全無能爲力。

關於如何使這項工作的任何建議,將不勝感激。謝謝

+0

爲了幫助您調試JS,嘗試'的console.log(E)'在'success'& 'error'功能而不是'alert'。因爲$ .ajax()'error'處理程序被觸發,所以假設錯誤在於JS是安全的 - 在發送之前嘗試將字符串更改爲有效的json(即:'str = {「hello」:「world」}' ) – Labu

+0

謝謝@WillemLabu的輸入。我接受了您的意見以及Joshua Whitley提供的鏈接中的信息,並解決了問題。我非常感謝你的協助。我會盡快發佈我使用的解決方案。 –

+0

很高興我能幫到你。 :{D – Labu

回答

1

它看起來像這裏的問題是,當它期望一個JSON對象時,你傳遞一個簡單的字符串到Web服務。看到這篇文章的共同問題與jQuery和ASP.NET Web服務(特別是第2項):

http://encosia.com/3-mistakes-to-avoid-when-using-jquery-with-aspnet-ajax/

+0

謝謝約書亞。使用你提供的鏈接,我改變了我的輸入字符串:var str =「Hello World」;到:var str =「{'str':'hello world'}」;該函數現在可以成功返回。現在我收到一條消息:「它工作:[對象對象]」。你知道我怎麼能讀取返回的對象,所以我可以解析它回到一個字符串?謝謝 –

+0

@Slaks給了我關於如何使用響應對象的第二個問題的答案。 ASP.Net WebMethods將它們的返回值用d屬性包裝在JSON對象中。 (您可以在瀏覽器的開發人員工具的響應正文中看到這一點) 您需要編寫e.d以獲取實際值。 謝謝 –

相關問題