我创建了ASP.NET Web API服务并托管了它。我用Fiddler检查时服务工作正常,但是当我通过jQuery ajax调用它时它不起作用,我也没有收到任何错误。 我尝试调用不同的API方法但遇到同样的问题
的WebAPI:
namespace WebApi.Controllers
{
public class ValuesController : ApiController
{
// GET api/values
public IEnumerable<string> Get()
{
return new string[] { "value1", "value2" };
}
// GET api/values/5
public string Get(int id)
{
return "value";
}
// POST api/values
public string Post(Interview Interview)
{
return "Date: " + Interview.DateOfSurvey + " \n rdInterviewObtained: " + Interview.rdInterviewObtained + "\n txtWhowasinterOther: " + Interview.txtWhowasinterOther;
}
// PUT api/values/5
public void Put(int id, [FromBody]string value)
{
}
// DELETE api/values/5
public void Delete(int id)
{
}
}
}
Ajax Call:
$("#btnSave2").click(function () {
var person = { DateOfSurvey: '01-01-2012', rdInterviewObtained: 'N', txtWhowasinterOther: 'N' };
alert('inside button click');
jQuery.support.cors = true;
$.ajax({
url: "http://url/api/Values",
type: 'GET',
//data: person,
//dataType: 'json',
success: function (data) {
alert('success');
},
error: function (x, y, z) {
alert('error');
alert(x + '\n' + y + '\n' + z);
}
});
});
答案 0 :(得分:1)
您似乎在某个按钮的.click处理程序中调用此AJAX方法。如果这是一个提交按钮,请确保通过从回调中返回false来取消默认操作,否则您的AJAX调用可能永远没有时间执行。
您的代码的另一个问题是您已指示jQuery使用CORS,但为此,您需要使用Web API发送正确的响应标头。您可能会阅读这里的an article
,其中说明了如何在服务器上实现这一目标。
jQuery.support.cors = true;
$('#btnSave2').click(function () {
$.ajax({
url: 'http://url/api/Values',
type: 'GET',
success: function (data) {
alert('success');
},
error: function (x, y, z) {
alert('error');
alert(x + '\n' + y + '\n' + z);
}
});
return false;
});