JQuery и кросс-домен с JSONP - пожалуйста, помогите - PullRequest
1 голос
/ 29 марта 2011

Я пробую jsonp с помощью jQuery.Я нашел много примеров в Интернете, и я считаю, что мой код правильный, но он все еще не работает для меня.

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

using System.Web;
using System.Web.Script.Services;
using System.Web.Services;
using System.Web.Script.Serialization;

namespace App_Code
{
    /// <summary>
    /// Summary description for WebService
    /// </summary>
    [WebService(Namespace = "http://tempuri.org/", Name = "WebService")]
    [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
    [System.ComponentModel.ToolboxItem(false)]
    // To allow this Web Service to be called from script, using ASP.NET AJAX, uncomment the following line. 
    [ScriptService]
    public class WebService : System.Web.Services.WebService
    {
        [WebMethod]
        [ScriptMethod(UseHttpGet = true, ResponseFormat = ResponseFormat.Json)]
        public string GetAd()
        {
            var json = new JavaScriptSerializer().Serialize(new
            {
                Prop1 = "some property",
            });
            string callback = HttpContext.Current.Request["callback"];
            return string.Format("{0}({1})", callback, json);
        }
    }
}

На стороне клиента:

$(document).ready(function () {
    alert('Loading...');

    $.ajax({ url: 'http://mediaserver/WebService.asmx/GetAd?callback?',
        data: {},
        success: function (json) {
            alert(json);
        }
    });
});

Firebug показывает, что это успех, но я получаю нулевое значение от предупреждения.У меня есть свой веб-сервис в iis7 локально, и я тестирую его через отладку в моем клиентском проекте.

Мне нужно, чтобы междоменная работа работала.

Пожалуйста, помогите.

Ответы [ 2 ]

1 голос
/ 29 марта 2011

У вас есть два вопросительных знака в вашем URL http://mediaserver/WebService.asmx/GetAd?callback?

Я думаю, что это должно быть

$(document).ready(function () {
    alert('Loading...');

    $.ajax({ url: 'http://mediaserver/WebService.asmx/GetAd?callback=',
        data: {},
        success: function (json) {
            alert(json);
        }
    });
});
0 голосов
/ 29 марта 2011

Я думаю, что вам не хватает = в URL.callback должен иметь = (по крайней мере, у меня так работает).Первая строка будет:

$.ajax({ url: 'http://mediaserver/WebService.asmx/GetAd?callback=?'
...

Также вы не указываете, хотите ли вы JSON, либо используйте dataType: 'json' в запросе ajax, либо перейдите непосредственно к $.getJSON ( doc ).Не уверен, что jQuery способен автоматически определять JSONP.Это может быть не причиной ошибки.

...