2012-02-14 221 views
2

我可以成功地從我的Web服務接收值,因此,在這種情況下,腳本工作正常。不過,我現在正在嘗試使用下面的'data'字段將數據發送到webservice。我無法弄清楚如何發送一個簡單的字符串(例如「test」)到web服務,這是我的web方法期望的參數。如何通過AJAX POST將「數據」發送到ASMX Web服務?

任何幫助,非常感謝。例如:

function setQuestion() { 
$.ajax({ 
    type: "POST", 
    **data: "{}",** //how do i use this to send a string?? 
    dataType: "json", 
    url: "http://someURL", 
    contentType: "application/json; charset=utf-8", 
    success: onSuccess 
}); 
} 

function onSuccess(msg) { 
$("#questiontxt").append(msg); 
} 

回答

9

對於ASMX,你需要通過數據對象的字符串化版本,因此,例如:

var data = "{param1:" + param1IsANumber + 
      ", param2:\"" + param2IsAString + "\"}"; 
$.ajax({ 
data: data, 
dataType: "json", 
url: url, 
type: "POST", 
contentType: "application/json; charset=utf-8", 
success: function (result) {} 
}); 

或者你也可以哈瓦對象並使用jquery-json

var data = {}; 
data.param1 = 1; 
data.param2 = "some string"; 
$.ajax({ 
data: jQuery.toJSON(data), 
dataType: "json", 
url: url, 
type: "POST", 
contentType: "application/json; charset=utf-8", 
success: function (result) {} 
}); 

最後,您的Web服務類必須是這樣的:

[WebService(Namespace = "http://www.somedomainname.com/")] 
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)] 
[ScriptService] 
public class MyService : System.Web.Services.WebService 
{ 
    [WebMethod] 
    [ScriptMethod(ResponseFormat = ResponseFormat.Json)] 
    public void MyServiceCall(int param1, string param2) 
    { 
    } 
} 
+0

現貨在cdm上,你的第一塊代碼就是解決方案 – davey1990 2012-02-14 22:26:29

+0

太好了你實際上應該引用param的名字,例如「{\」param1 \「:」+ p1 +「}」但它實際上沒有工作:) – cdm9002 2012-02-14 22:31:07

0

data: "{"parameterName": "test"}"

在WebService的

public void GetData(string parameterName) {}

+0

您好petrov,我也得到「無效的JSON原始」異常爲您的解決方案。我也需要一個名爲「GetData」的Web服務中的方法來檢索這些數據嗎? – davey1990 2012-02-14 22:05:12

+0

好的,我的解決方案不工作,因爲我使用了相同的引號 – 2012-02-14 22:15:41

1

jQuery的取數據參數,並將其轉換成適當的類型請求變量。

所以你使用這樣的:

data: { myParameterName: "myParameterValue", myParameterName2: "myParameterValue2" } 

和jQuery做的工作休息你。

基於評論具體的例子:

data: { toSend: "test" } 
+0

感謝那個戴夫,但我仍然得到一個異常:「無效的JSON原始值:」... – davey1990 2012-02-14 22:03:39

+0

你可以發佈ASMX函數的聲明,你是試圖發佈到? – Dave 2012-02-14 22:05:54

+0

它確定戴夫,這種方式工作: ** data:'{「value」:「test」}',** – davey1990 2012-02-14 22:11:19