Asp.net Web API在ajax调用中给出错误

时间:2013-03-15 15:39:02

标签: jquery asp.net-mvc-4 asp.net-web-api

我创建了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);
            }
        });
});

1 个答案:

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