1

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 呼び出し:

$("#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);
            }
        });
});
4

1 に答える 1

2

ボタンの .click ハンドラーでこの AJAX メソッドを呼び出しているようです。これが送信ボタンである場合は、コールバックから false を返してデフォルト アクションをキャンセルしてください。そうしないと、AJAX 呼び出しを実行する時間がなくなる可能性があります。

コードのもう 1 つの問題は、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;
});
于 2013-03-15T15:53:07.197 に答える