Ajax POST с использованием jQuery для приложения MVC в другом домене с использованием JSON - PullRequest
0 голосов
/ 07 февраля 2012

Я пытаюсь отправить запрос AJAX POST в приложение MVC

    $.ajax({

        type: 'POST',
        dataType: 'json',
        data: {"FirstName":"chris","LastName":"cane"},
        contentType: 'application/json',
        url: "http://dev.irp.com/irp.Ajax.Search/home/Foo",
        success: function (data) {
            alert(data);
        }
    });

Этот скрипт присутствует на другом сервере в приложении ASP.NET. Мое приложение MVC для обработки кода, как показано ниже

    [HttpPost]
    public JsonResult Foo(fromclient test)
    {
        var obj = new SearchMemberServiceClient();
        var members = obj.FindMember(test.FirstName, test.LastName, "", "", "", "").Members;

        IEnumerable<Bar> sorted =
            from a in members
            orderby a.FirstName ascending
            group a by new
            {
                a.FormattedFullName,
                a.MembershipsProxy[0].GoodFromDate,
                a.MembershipsProxy[0].GoodThroughDate,
            } into k
            select new Bar
            {
                FormattedName = k.Key.FormattedFullName,
                goodfrom = k.Key.GoodFromDate,
                goodthru = k.Key.GoodThroughDate,
            };
        return Json(sorted.ToList());
    }

public class Bar
{
    public string FormattedName { get; set; }

    public DateTime goodfrom { get; set; }

    public DateTime goodthru { get; set; }
}
public class fromclient
{
    public string FirstName { get; set; }
    public string LastName { get; set; }
}

Проблема заключается в том, что скрипт должен опубликовать этот URL и получить данные json. Но поскольку контроллер не имеет никакого представления, когда я заглядываю внутрь консоли на стороне клиента, он говорит 404 ошибка для URL, а также говорит, что XMLHttpRequest не может загрузить http://dev.irp.com/irp.Ajax.Search/home/Foo. Origin http://web -dev. irps.com не разрешен Access-Control-Allow-Origin.

Я не знаю, связана ли проблема с абсолютным путем URL для запроса ajax. Если так, как я мог преодолеть это?

Ответы [ 2 ]

3 голосов
/ 08 февраля 2012

Из-за ограничения той же политики происхождения , которое не встроено в браузеры, вы не можете отправлять запросы AJAX в разные домены.Возможный обходной путь - сервер возвращает JSONP вместо JSON.Вот пример пользовательского JsonpResult, который вы можете использовать в своем действии контроллера.

1 голос
/ 07 февраля 2012

Можете ли вы попробовать JSONP?Почему Джсон?Идеально для междоменного домена.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...