вызов веб-службы asmx из jQuery - PullRequest
1 голос
/ 01 октября 2010

Я не могу вызвать веб-сервис (asmx) из функции jQuery.

При вызове веб-службы выдается ошибка «Отказано в доступе». Он работает в dev и локальной машине, но я получаю ту же ошибку.

Вот мой вызов ajax

$.ajax({
            type: "POST",
            url: "http://server.com/calculator.asmx/calculus",
            data: "{ 'userID': '" + $("#usrid").val() + "','password': '" + $("#password").val() + "' }",
            contentType: "application/json; charset=utf-8",
            dataType: "json",
            success: Success,
            error: Error
        });

Мой веб-сервис

[WebService(Namespace = "http://www.company.com/webservices/calculus")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
[System.ComponentModel.ToolboxItem(false)]
[System.Web.Script.Services.ScriptService]

public class calculator : System.Web.Services.WebService
{

    [WebMethod]
    [System.Web.Script.Services.ScriptMethod(UseHttpGet=false, ResponseFormat = System.Web.Script.Services.ResponseFormat.Json)]
   public bool calculus(string userName, string password)
    {// my code}

Ошибка в функции http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js и ошибка «Отказано в доступе» для e.username? x.open (n, e.url, e.async, e.username, e.password): x.open (n, e.url, e.async);

Я включил [AspNetCompatibilityRequirements (RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)] в класс, как показано в http://forums.asp.net/p/1570168/3935094.aspx, и не смог исправить ошибку. Может ли кто-нибудь, пожалуйста, помогите мне в этом.

Спасибо

Ответы [ 2 ]

2 голосов
/ 01 октября 2010

AJAX-вызовы привязаны к той же политике происхождения , что означает, что вы не можете вызвать веб-службу, расположенную в другом домене. Браузер просто отбросит запрос. Одним из возможных решений было бы написать сценарий на стороне сервера в том же домене, который будет служить мостом для реального веб-сервиса, а затем вызвать этот сценарий.

0 голосов
/ 04 октября 2010

JSONP - это возможный способ обойти ограничения "той же политики происхождения" (или межсайтовый скриптинг или XSS).Он имеет свой собственный набор проблем (например, он работает только с запросами в режиме GET), так что это определенно не панацея.Но, наверное, стоит потратить время на то, чтобы взглянуть.Об этом довольно много публикаций в стеке, что должно помочь вам начать работу.

...