2016-08-04 39 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); 
} 

我嘗試使用上述服務$就打電話,我不斷收到錯誤消息「未找到」

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" 
    }); 

我改變$就到下面,仍然得到「未找到」

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個參數。我正面臨着這個問題。

回答

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 
}); 

還要注意,通過直接提供對象的$.ajaxdata財產jQuery將編碼和逃避價值觀的你,是必要的。

+0

我儘量避免爲此目的創建許多課程。最後,我決定將參數更改爲鍵入'string jsonObject',並且在客戶端中,將使用JSON.stringify將對象轉換爲json並傳遞給服務器。在服務器站點上,將這個json字符串轉換爲動態對象並使用它。用這種方法,我可以跳過參數的創建對象類。 – Wilson