2012-09-14 59 views
1

有關如何解決以下問題的任何信息,將不勝感激進口數據從javascript文件到VB.Net

我試圖將數據從一個JavaScript文件傳送到使用JSON一個VB.Net應用。

在JavaScript文件中的代碼如下:

function TalkToServer() { 

    var formData = "{'firstname':'fname','lastname':'dgln'}" 


     $.ajax({ 
      type: "POST", 
      url: "dataserver.aspx/Save", 
      data: "{'firstname':'fname','lastname':'dgln'}", 
      contentType: "application/json;charset=utf-8", 
      dataType: "json", 
      success: function (msg) { 
       alert('Hello'); 
      }, 
      error: function() { alert(arguments[2]); } 
     }); 

} 

的VB.Net代碼如下:

Imports System.Collections.Generic 
Imports System.Linq 
Imports System.Web 
Imports System.Web.Services 
Imports System.Web.Script.Serialization 
Imports System.Web.Script.Services 

Imports System.Web.UI 
Imports System.Web.UI.WebControls 

Public Class dataserver 

Inherits System.Web.UI.Page 

Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load 

End Sub 

<WebMethod()> _ 
<ScriptMethod(ResponseFormat:=ResponseFormat.Json, UseHttpGet:=False)> _ 
Public Function Save(ByVal formData As williedata) As returnMessages 
    'Public Function Save(ByVal name As String) As returnMessages 

    Dim a As String = formData.firstname 
    Dim b As String = formData.lastname 


    Dim mes As returnMessages 
    mes.returnParameters = "KLJN" 
    mes.recAction = "JKHJH" 

    Return mes 



End Function 



End Class 

的數據結構的定義如下:

Imports Microsoft.VisualBasic 

Public Class williedata 


Public lastname As String 
Public firstname As String 

End Class 

但是 - 似乎VB.Net函數似乎永遠不會達到。以下錯誤不斷appering:

內部服務器錯誤

我知道我做錯了什麼,但無法弄清楚什麼。

WCV

+0

你確定你的網址是'dataserver.aspx'而不是'dataserver.asmx'嗎?如果這是正確的,你是否嘗試調試並在你的方法中設置斷點? – marteljn

+0

是的,它是dataserver.aspx,一個正常的asp頁面。我試圖在方法中設置一個斷點,但它永遠不會到達WCV – user1672071

回答

0

刪除 ""所以你傳遞一個文本對象jQuery的: data: {'firstname':'fname','lastname':'dgln'}

由於您將 contentType設置爲JSON,因此JQuery應從對象文本中正確解析它。由於您當前正在傳遞字符串,這不是有效的JSON,因此無法對其進行正確編碼。

編輯

至於對方的回答表明我錯了,在data參數必須由contentType所以在這種情況下,有效的JSON indictated格式:

data: '{"firstname":"fname","lastname":"dgln"}'

+0

做到了 - 仍然是同樣的錯誤。 WCV – user1672071

+0

@ user1672071您是否使用類似firebug或fiddler的工具來檢查您的ajax請求的請求標頭,如果是的話發佈請求和響應,如果不是,我強烈建議您熟悉這些工具之一,這樣的大多數問題是通過這種方式收集的信息解決。 – marteljn

+0

引用的數據參數是必需的。如果你通過jQuery的數據參數傳遞一個對象字面值,jQuery將對這些數據進行URL編碼,而不是JSON對其進行字符串化。這將導致ASP.NET拋出一個無效的JSON基元錯誤,因爲它期望JSON並且POST數據將被URL編碼(更多信息:http://encosia.com/asmx-scriptservice-mistake-invalid-json-primitive/) –

0

你數據參數需要與方法簽名更接近匹配:

data: '{"formData":{"firstname":"fname", "lastname":"dgln"}}' 

您可以use JSON.stringify to simplify that process

+0

非常感謝您的反饋。明天早上我會嘗試第一件事。現在有點晚了 - 我不能再集中精力了。 WCV – user1672071