我正在构建一个 Web 服务,它将使用 jquery 与网页进行通信。
我想构建我的 Web 服务,使其类型安全,而不需要在服务器端执行转换。
如何使用 jquery 从客户端发出 ajax 调用到需要 int 值参数的服务器。
编辑:
我明白这是不可能的。我正在用 C# 进行服务器端编程。
目前,Web 服务支持来自客户端 (js) 和其他实用程序(其他 C# 程序)的调用。我目前能想到的最简单的解决方案是复制方法并将其签名更改为字符串,然后转换数据类型并调用方法,这次使用正确的数据类型。
是否有任何 .net 4 属性可以装饰我的方法来自动执行此操作?
谢谢
恐怕你不能。随请求发送的所有参数都是字符串类型。
您可以将参数作为编码 JSON 发送。
假设一个物体
{"int":1}
urlencoded 它是
%7B%22int%22%3A1%7D
发送请求至http://domain.org/params=%7B%22int%22%3A1%7D http://domain.org/params=%7B%22int%22%3A1%7D
在domain.org上解码它:
$params=json_decode($_GET['params']);
你会看到类型仍然是整数:
echo gettype($params->int);
但这在某种程度上也是服务器端转换(因为您需要解码 JSON)。
关于后面的评论,这里有一个例子,表明它不是涂口红的猪,尝试一下,看看类型是否被保留:
<html>
<head>
<title>Test</title>
<script type="text/javascript">
<!--
function request()
{
var obj={
"pig":1,
"cow":2.2,
"duck":'donald',
"rabbit":{"ears":2}
};
location.replace('?params='+encodeURIComponent(JSON.stringify(obj)));
}
//-->
</script>
</head>
<body>
<input type="button" onclick="request()" value="click">
<pre><?php
if(isset($_GET['params']) && $params=json_decode($_GET['params']))
{
var_dump($params);
}
?>
</pre>
</body>
</html>
Output:
object(stdClass)#1 (4) {
["pig"]=>
int(1)
["cow"]=>
float(2.2)
["duck"]=>
string(6) "donald"
["rabbit"]=>
object(stdClass)#2 (1) {
["ears"]=>
int(2)
}
}
在我看来,这还不错,这就是 JSON 的“发明”目的,即在应用程序之间交换数据。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)