2016-08-04 5 views
0

У меня есть ниже asp.net службы:

[ActionName("AddNewCompany")] 
public apiResult UpdateCompany(Company company, string UserCode, string APIKey) 
{ 
    spCard myStoreProcedure = new spCard(); 
    return myStoreProcedure.updateCompany(company, UserCode, APIKey); 
} 

я пытаюсь использовать $ .ajax вызов выше службы, я снова получил сообщение об ошибке 'Not Found'

var apiParameter = { 
     Code: code, 
     Name: name, 
     CompanyGroup: companyGroup 
    }; 
    request = $.ajax({ 
     type: "POST", 
     contentType: "application/json; charset=utf-8", 
     dataType: "json", 
     url: G_BASE_URI + "testAPI/AddNewCompany", 
     data: "company=" + JSON.stringify(apiParameter) + "&UserCode=AAA&APIKey=123" 
    }); 

я изменить $ .ajax ниже, по-прежнему получать «Not Found»

var apiCompany = { 
     Code: code, 
     Name: name, 
     CompanyGroup: companyGroup 
    }; 
    var apiParameter = { company: apiCompany, UserCode: "XXX", APIKey: "12345" }; 

    request = $.ajax({ 
     type: "POST", 
     contentType: "application/json; charset=utf-8", 
     dataType: "json", 
     url: G_BASE_URI + "dbCard/AddNewCompany", 
     data: jQuery.param(apiParameter) 
    }); 

я и другие услуги, которые имеют только 1 параметр, он работает, как ожидалось , Для этих служб более одного параметра. Я столкнулся с этой проблемой.

ответ

1

Для связывания связующего элемента C# для эффективной сопоставления значений, которые вы отправляете, вам лучше предоставить данные в объекте, который вы можете структурировать, чтобы точно соответствовать свойствам вашего класса.

Обратите внимание, что в вашем текущем коде вы устанавливаете dataType в JSON, но вы отправляете строку с символом urlencoded. Попробуйте это:

var data = { 
    company: { 
     Code: code, 
     Name: name, 
     CompanyGroup: companyGroup 
    }, 
    UserCode: 'AAA', 
    APIKey: '123' 
}; 

request = $.ajax({ 
    type: "POST", 
    contentType: "application/json; charset=utf-8", 
    dataType: "json", 
    url: G_BASE_URI + "testAPI/AddNewCompany", 
    data: data 
}); 

отметить также, что путем предоставления объекта непосредственно к data свойству $.ajax JQuery будет кодировать и избежать значения для вас, по мере необходимости.

+0

Я стараюсь избегать создания многих классов для этой цели. Наконец, я решил изменить параметр для ввода «string jsonObject» и на клиенте, будет использовать JSON.stringify для преобразования объекта в json и перехода на сервер. на сервере, преобразует эту строку json в динамический объект и будет использовать ее. с помощью этого метода я могу пропустить класс объекта create для этого параметра. – Wilson

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