我正在尝试创建将由许多网站/应用程序使用的Web Api。
Api将字典作为参数,因为它将是动态的。
C#方法:
[HttpPost]
public Dictionary<string, string> ApiTest(Dictionary<string, string> parameters )
{
Dictionary<string, string> dic_data = new Dictionary<string, string>();
foreach (KeyValuePair<string, string> tmp in parameters)
{
dic_data[tmp.Key] = tmp.Value;
}
return dic_data;
}
Ajax调用方法:
请注意,我遗漏了contentType:“ application / json”,因为它抱怨它包含允许的CORS
var data = {"parameters":{"product_id":"1","product_model":"HFJ5G1.5","product_type":"plat","product_return":"graviteits"}};
//var data = {AlbumName: "Dirty Deeds",Songs:[ { SongName: "Problem Child"},{ SongName: "Squealer"}]};
var parameters = {};
parameters['1'] = 10;
parameters['2'] = 11;
$.ajax({
type :'POST',
url : 'http://localhost:8082/api/WebController/ApiTest/',
dataType : 'json',
data: parameters ,
success : function(data) {
console.log(data);
我也尝试过绑定参数:
public class myParameters
{
public Dictionary<string,string> parameters { get; set; }
}
public Dictionary<string, string> ApiTest(myParameters parameters )
仍然没有运气。
在浏览器控制台上,我只是不断从API接收回“ {}”。
我看了很多例子,但似乎没有任何帮助。我对C#还是很陌生,因此有些评论和答案就在我之上(例如ModelBinder的东西)
从Javascript将KeyValuePair或IDictionary列表传递到Web Api控制器
更新:
经过几个小时的搜索,我决定从托管API的同一站点对API进行“本地”调用。然后,我可以将contentType放置在适当的位置:'application / json; charset = utf-8',将解析后的JSON post对象发送到Dictionary参数没有问题:-(
所以现在我继续搜索contentType + C#Api +字典+ CORS
在服务器上启用了CORS。使用简单的绑定参数(例如字符串)可以很好地跨域工作。字典失败的地方。
但是我不得不在IIS上走得更远,才能在AJAX调用中指定内容类型
我已经在未指定IIS内容类型标头的情况下进行了测试,即使我添加了crossDomain:true,我仍然会收到抱怨CORS的Jquery错误
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句