2014-09-22 5 views
0

У меня есть некоторая проблема ajax с строкой запроса, я могу отправить данные, если страница не указана, и Info.aspx/Save отлично работает. Но когда я заполняю somethings строкой запроса, а затем отправляю те же данные, он вернет ошибку http 500. У меня нет ничего с querystring в javascript, я использую его в 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); 
    } 

Я просто использую querystring в C# для заполнения входов. Хотя я отправляю те же данные, что он работает без запроса в адресной строке inpgae, если у него есть запрос в адресной строке, ajax возвращает мне ошибку http500, а SaveWebMethod не работает.

+0

вопрос является неполным, то как у отправки данных ?? Если вы говорите, что вы пытаетесь отправить пару с именем, это должен быть json-объект, он не может быть таким же, как при вызове с URL-адресом. – kashipai

+0

Я добавил что-то, это то, что вы имеете в виду? –

+0

@ user4065706 - используйте ** 'JSON.stringify (data);' ** – prog1011

ответ

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 Method и Query 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

Я дебютировал paramates в 'webmethod Save (имя строки, описание строки, строковый код)'. , и я использовал querystring для pageloading. Он работает для обоих? –

+0

Это веб-сервис, поэтому параметры не будут переданы в Querystring. Первая строка кода, которую вы ему дадите, решит его проблему - нет необходимости в остальном, так как она неверна или неверно направляет его. – Archer

+0

@ user4065706 см. Мое обновление ответа. – Hamix

Смежные вопросы