我有一个AJAX调用,我想针对WCF GET服务运行.基本上,对服务的调用(通过jquery)看起来像这样:
$.get(serviceEndpoint, {query : "some search text", statusTypes: [1, 2]}, function (result) { /* do something*/ }, 'text');
Run Code Online (Sandbox Code Playgroud)
当这个调用运行时,我看到firebug中的GET正确通过,我确实击中了端点.但是,该参数statusTypes
始终为null.
来自jquery的GET本身看起来像是编码的,但是当我不编码括号时,调用根本不会进入端点:
而WCF服务本身:
[OperationContract的]
[WebInvoke(Method ="GET",BodyStyle = WebMessageBodyStyle.WrappedRequest,
ResponseFormat = WebMessageFormat.Json)]public ResultsViewModel GetTags(string query,int [] statusTypes)
是否可以通过GET将数组传递给WCF服务?
排列并不多,所以我可以编写一个单独的端点"每个数组",但我宁愿把它保持在一个.
假设我有一个场景,我有一个全局插件(或者至少是一个绑定到更多事件的插件).
此插件采用选择器,并将实时点击绑定到它.伪jquery中的某些内容可能如下所示:
$.fn.changeSomething = function(){
$(this).live("change", function(){ alert("yo");});
}
Run Code Online (Sandbox Code Playgroud)
在另一个页面上,我有一个额外的实时绑定,如下所示:
$("input[type='checkbox']").live("click", function(){alert("ho");});
Run Code Online (Sandbox Code Playgroud)
在这种情况下,理想情况下,该复选框最终将绑定到两个直播事件.
我所看到的是变化事件应该触发,我被警告"哟".但是,使用此实时点击事件,我从不触发它.但是,使用显式点击绑定,我会点击它.
简单的解决方法是在实时更改处理程序结束时触发单击事件,但这对我来说似乎很笨拙.有任何想法吗?
请注意,这是使用jquery 1.4.2并且只发生在IE8中(我认为6/7也会,但我还没有测试过它们).
一个例子(你需要jquery-1.4.2.min.js):
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<head>
<script src="jquery-1.4.2.min.js" type="text/javascript"></script>
<script type="text/javascript">
$.fn.changeSomething = function(){
var t = $(this);
t.live("change", function(){
alert("yo");
});
};
$(document).ready(function(){
$("input[type='checkbox']").changeSomething();
$("#special").live("click", function(){
alert("ho");
});
});
</script>
</head>
<body>
<form>
<input type="checkbox" id="cbx" />
<input type="checkbox" id="special" />
</form>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)