从JQuery对Web API进行POST时出现问题
我有一个带有以下POST方法的web api
public HttpResponseMessage Post([FromBody]string package)
我有一个使用HttpCLient
的控制台应用程序没有问题。 当我尝试通过jQuery
进行调用时,我在包变量上得到null
。
这是我现在的代码:
$.ajax({ url: 'http://localhost:8081/api/Package/', type: 'POST', data: JSON.stringify(message), contentType: "application/json;charset=utf-8", success: function (data) { alert(data.length); }, error: function (xhr, ajaxOptions, thrownError) { alert('Status: '+xhr.status+', Error Thrown: '+thrownError); } });
“message”变量是包含两个属性的复杂模型。
我能做错什么?
我很感激你的帮助……
我能够在这里找到另一篇文章的解决方案: 调用Web Api POST总是从jQuery接收null值 。
我必须通过以下方式修改我的代码:
读取的行: data:JSON.stringify(message),更改为: data:JSON.stringify(’=’+ message),.
我去了API post方法并添加了以下代码行:
package = package.Replace(“=”,“”);
为了删除在JQuerypost上添加的’=’。
将值绑定到发送到服务器的响应可能存在问题
尝试将数据发送为
$.ajax({ url: 'http://localhost:8081/api/Package/', type: 'POST', data: { package : JSON.stringify(message) } datatype: 'json', success: function (data) { alert(data.length); }, error: function (xhr, ajaxOptions, thrownError) { alert('Status: '+xhr.status+', Error Thrown: '+thrownError); } });
我假设你的 JSON.stringify(message)
返回一个字符串值
更新
public HttpResponseMessage Post([ModelBinder]string package)
允许包从任何地方绑定而不仅仅是身体为我做了。