我使用json调用javascript文件中的web服务,但只有当.asmx文件和javascript文件都在我的本地服务器或上时,才会调用web服务。服务器
但我想测试从我的本地服务器上传到我的实时服务器上的web服务。
请告诉我如何从本地服务器测试我的实时网络服务。 因为当我的Javascript文件也出现在实时但当javascript文件在本地并且Web服务在实时服务器上时不能正常工作时,同样的Web服务正常工作
请帮助
答案 0 :(得分:0)
答案 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?