来自javascript的web服务调用

时间:2014-05-07 14:27:54

标签: jquery json html5 web-services asp.net-ajax

我使用json调用javascript文件中的web服务,但只有当.asmx文件和javascript文件都在我的本地服务器上时,才会调用web服务。服务器

但我想测试从我的本地服务器上传到我的实时服务器上的web服务。

请告诉我如何从本地服务器测试我的实时网络服务。 因为当我的Javascript文件也出现在实时当javascript文件在本地并且Web服务在实时服务器上时不能正常工作时,同样的Web服务正常工作

请帮助

2 个答案:

答案 0 :(得分:0)

问题是您正在尝试向其他域发出请求。

您可以尝试使用jQuery.ajax调用的 crossDomain 选项。

https://api.jquery.com/jQuery.ajax/

答案 1 :(得分:0)

您可以通过某些安全原因调用同一域中的Web服务。必须使用带填充的JSON(JSONP)。

您的服务必须返回jsonp,这基本上是javascript代码。您需要从ajax请求向服务提供回调函数,返回的是函数调用。

示例:1

Ajax请求:

    function hello() {

        $.ajax({
            crossDomain: true,
            contentType: "application/json; charset=utf-8",
            url: "http://example.example.com/WebService.asmx/HelloWorld",
            data: {}, // example of parameter being passed
            dataType: "jsonp",
            success: jsonpCallback,

        });
    }

    function jsonpCallback(json) {
        document.getElementById("result").textContent = JSON.stringify(json);
    }

服务器端代码:

public void HelloWorld(int projectID,string callback)
{

    String s = "Hello World !!";
    StringBuilder sb = new StringBuilder();
    JavaScriptSerializer js = new JavaScriptSerializer();
    sb.Append(callback + "(");
    sb.Append(js.Serialize(s));
    sb.Append(");");
    Context.Response.Clear();
    Context.Response.ContentType = "application/json";
    Context.Response.Write(sb.ToString());
    Context.Response.End();
}

示例:2 How can I produce JSONP from an ASP.NET web service for cross-domain calls?