использовать веб-сервис asp.net, который возвращает JSON с отдельной HTML-страницы - PullRequest
1 голос
/ 20 декабря 2008

Я разработал веб-сервис на asp.net, и я могу протестировать его со страницы aspx в проекте и легко отображать информацию, возвращенную в формате JSON.

Теперь мне нужно использовать веб-сервис с отдельной html-страницы.

Есть ли у кого-то опыт с этим? Я озадачен частью, которая заменит это

<asp:ScriptManager ID="ScriptManager" runat="server">
    <Services>
        <asp:ServiceReference Path="~\MyService.asmx" />
    </Services>
</asp:ScriptManager>

Если это невозможно с прямыми html и javascript, может кто-нибудь показать мне отдельную php-страницу, которая сделает это?

Ответы [ 4 ]

4 голосов
/ 20 декабря 2008

См. Ссылку:

http://encosia.com/2008/03/27/using-jquery-to-consume-aspnet-json-web-services/

Использовать JQuery

www.jquery.org

По сути, вы делаете свой скрипт веб-службы вызываемым, просто атрибутом в определении веб-службы, и вы делаете:

  $.ajax({
    type: "POST",
    url: "~/MyService.asmx/MyMethod",
    data: "{parameterName:'" aStringArgument + "'}",
    contentType: "application/json; charset=utf-8",
    dataType: "json",
    success: function(msg) {
       var data = msg.d
       // Now var is an object with properties just like your object
    }
  });
1 голос
/ 20 декабря 2008
0 голосов
/ 21 декабря 2008

Если вы не хотите использовать ScriptManager (который добавляет более 100 тыс. JS на вашу страницу), вы можете использовать этот метод, чтобы использовать jQuery для подключения к вашим веб-службам .

0 голосов
/ 20 декабря 2008

Вы можете использовать Javascript для доступа к вашему веб-сервису.

Например - если у вас есть веб-служба json, определенная следующим образом:

[WebMethod]
[ScriptMethod(ResponseFormat = ResponseFormat.Json)]
public String Foo(String p1, String p2)
{    
    return "Hello World";
}

Вы можете назвать это следующим образом:

var httpobj = getXmlHttpRequestObject();
//Gets the browser specific XmlHttpRequest Object
function getXmlHttpRequestObject() 
{    
    if (window.XMLHttpRequest)
        return new XMLHttpRequest();
    else if(window.ActiveXObject)
       return new ActiveXObject("Microsoft.XMLHTTP");
} 

CallService()
{    
    //Set the JSON formatted input params    
    var param = "{'p1' : 'value1', 'p2' : 'value2'}";    
    //Send it to webservice    
    if(httpobj.readyState == 4 || httpobj.readyState == 0)
    {
        httpobj.open("POST", 'service.asmx/' + 'Foo', true);
       //Mark the request as JSON and UTF-8
       httpobj.setRequestHeader('Content-Type','application/json; charset=utf-8');
       httpobj.onreadystatechange = OnSuccess;
       httpobj.send(param);
    }
}

//Called on successfull webservice calls
OnSuccess()
{
   if (httpobj.readyState == 4)
   {
       //Retrieve the JSON return param
       var response = eval("(" + httpobj.responseText + ")");
   }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...