现要从某webservice得到一些返回值,要求用Jquery实现。= =+
--------------------------------------------------------------------------------------------
下面这个是我测试的Jquery代码:
$(document).ready(function() {
$('#btn1').click(function() {
$.ajax({
type: "POST",
contentType: "application/json",
url: "http://xxxxxx/WebService.asmx/HelloWorld",
//WebService的真实地址和方法名(不过其实这个页面是我为了测试临时做的,放在服务器上...),如果url用这个的话,测试点击按钮就完全没反应,貌似没取出值...
//url: "WebService.asmx/HelloWorld",
//如果把这个 WebService页面跟Jquery放在一起本地调用的话倒是能弹出alert,弹出值见下面说明
data: "{ }", //做最简单的测试这里就没用参数
dataType: 'json',
success: function(result) {
$('#dictionary').append(result);//成功的话显示返回值
},
error: function(x, e) {
alert(x.responseText);
}
});
});
});
页面html:
<div id="btn1" class="button">
HelloWorld</div>
<div id="dictionary">
</div>
webservice:
[WebService(Namespace = "http://tempuri.org/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
[System.ComponentModel.ToolboxItem(false)]
[System.Web.Script.Services.ScriptService]
public class WebService : System.Web.Services.WebService {
[WebMethod]
public string HelloWorld()
{
return "Hello World ";
}
}
=======================================================
说明:
如果用webservice网测试址的话,点了按钮后完全没反应
(网页左下角有黄色感叹号,说access is denied. 报错代码行数5千多行——话说我一共加起来也没几行代码 - =)
如果用第二个url,也就是本地的那个的话,也不能在dictionary中显示,而是弹出alert,alert 出来的内容就是正常访问该webservice显示出的xml
<?xml version="1.0" encoding="utf-8" ?>
<string xmlns="http://tempuri.org/">Hello World</string>
另外,我这些是在VS2005下操作的............. = =||||
请问:
1. 怎么才能通过网址从webservice那里得到正确值啊?难道不能直接用url也要添加web引用啥的?
2. 难道Jquery真的不能用VS2005只能用2008么?为啥米?
如果可能的话,还是想尽可能用2005,因为大部分都是用2005开发的,想统一一些。当然了,如果2005真的就是不行只能用2008的话,那也只能用2008了,倒也不是死活非用2005不可~ 只是稍微告诉我一下原因,然后我好回复经理.... orz
请各位高手不吝赐教,之前完全没接触过 ajax/Jquery的小白,经理又死活让我用这个... 囧rz
深鞠躬!~ 先谢了! 如果回答的很详细我一定加分... 虽然我穷的叮当响..... (┬_┬)
自己发个实例:http://www.cnblogs.com/xlovey/archive/2008/11/19/1336427.html
你的客户端jQuery通过json格式和服务器交换数据,但是asmx默认的是xml格式,所以,你需要服务器返回json格式的数据,或者,你按照字符串获取类似 <?xml version="1.0" encoding="utf-8" ?>
<string xmlns="http://tempuri.org/">Hello World</string> 这样的xml后,自己在客户端解析.
第一种情况属于跨域调用,这样调用不允许。
第二种情况要加上:contentType: 'application/json; charset=utf-8',