2014-09-22 50 views
0

我有一些問題AJAX與查詢字符串,我可以發送數據,如果頁面沒有和Info.aspx/Save偉大工程。但是,當我用查詢字符串填充一些東西,然後發佈相同的數據,它會返回http 500錯誤。我沒有在javascript中使用querystring我在C#中使用它作爲id。一些問題頁面有一個查詢字符串,而使用AJAX

var data = '{name: "' + $("input[name$='name']").val() + 
        '",description: "' + $("input[name$='description']").val() + 
        '",code: "' + $("input[name$='code']").val() +'"}'; 
$.ajax({ 
       type: "POST", 
       url: "Info.aspx/Save", 
       data: data, 
       contentType: "application/json", 
       dataType: "json", 
       success: function (data) { 
        var result = data.d 
        console.log(result) 
        if (result > 0) 
         success.show(); 
        else 
         error.show(); 
        Metronic.scrollTo(error, -200); 

       }, 
       error: function() { 
        console.log('err') 
       } 
      }); 

    [WebMethod] 
    public static int Save(string name, string description, string code) 
    { 
     ClassInfo classInfo = new ClassInfo(); 
     return ClassInfo.Save(name, code, description, FileInfo.id); 
    } 

我只是在C#中使用查詢字符串來填充輸入。儘管我發送相同的數據,它沒有查詢字符串inpgae的地址欄,如果它在地址欄查詢字符串阿賈克斯返回我http500錯誤和SaveWebMethod不起作用。

+0

的問題是不完整的,怎麼是U發送數據?如果說你試圖發送名稱值對,它必須是一個json對象,它不能與你使用URL調用時相同。 – kashipai 2014-09-22 08:48:36

+0

我添加了一些東西,這些是你的意思嗎? – 2014-09-22 08:53:50

+0

@ user4065706 - 使用**'JSON.stringify(data);'** – prog1011 2014-09-22 09:09:22

回答

1

data類型必須是object,沒有字符串。

var data = {name: $("input[name$='name']").val() ,description:$("input[name$='description']").val(),code:$("input[name$='code']").val()}; 

取出的contentType或將其更改爲

"application/x-www-form-urlencoded; charset=utf-8" 

然後

$.post('/Info.aspx/Save',data , 
    function (data) { 
}); 

或者

$.ajax({ 
    url: '/Info.aspx/Save', 
    data: data 
}); 

服務器端 您的JSON參數名稱必須用相同c#參數名稱。

[WebMethod(true)] 
public static string Save(string name, string description, string code) 
{ 
    return name+" "+description+" "+code; 
} 

可用的Web MethodQuery String(用於工作)
查詢字符串參數需要爲JSON傳遞。

data: JSON.stringify({ "name": "name", "description": "description","code":"code" }), 
contentType: "application/json; charset=utf-8" 

服務器端

[WebMethod(true)] 
[ScriptMethod(UseHttpGet = true, ResponseFormat = ResponseFormat.Json)] 
public static String Save(string name, string description, string code) 
{ 
} 
+0

我在'webmethod Save(string name,string description,string code)'中找到了參數。 和我用查詢字符串進行頁面加載。它對兩者都有效嗎? – 2014-09-22 09:02:23

+0

這是一個Web服務,因此參數不會在Querystring中傳遞。你給他的第一行代碼將解決他的問題 - 不需要休息,因爲它不正確或引導他錯誤的方式。 – Archer 2014-09-22 09:09:49

+0

@ user4065706看到我的答案更新。 – Hamix 2014-09-22 09:09:52

相關問題