有使用Jquery Ajax从数据库获取名称的函数。这个函数有输入参数,我在下面的代码中得到它:
var value = $(this).parent().find(":checkbox").val();
var typeSelect = GetLayerGeometries(value);
然后将值发送到ajax函数:
Ajax功能:
function GetLayerGeometries(LayerName) {
var data;
$.ajax({
url: 'GetLayerGeometries.aspx/GetLayerGeometry',
data: '{"LayerName":"' + LayerName + '"}',
async: false,
success: function (resp) {
data = resp;
callback.call(data);
},
error: function () { }
});
return data;
}
C#功能:
protected void Page_Load(object sender, EventArgs e)
{
string test = Request.Form["LayerName"];
GetLayerGeometry(Request.Form["LayerName"]);
}
public void GetLayerGeometry(string LayerName)
{
WebReference.MyWebService map = new WebReference.MyWebService();
string Name = map.GetLayerGeometries(LayerName);
if (Name != null)
Response.Write(Name);
}
我的问题: LayerName
为空。
我使用this link并测试所有方法,但LayerName仍为空。
答案 0 :(得分:1)
function GetLayerGeometries(LayerName) {
var data;
$.ajax({
url: 'GetLayerGeometries.aspx/GetLayerGeometry',
data: {"LayerName":LayerName},
async: false,
success: function (resp) {
data = resp.d;
callback.call(data);
},
error: function () { }
});
return data;
}
[WebMethod]
public static string GetLayerGeometry(string LayerName)
{
return LayerName
}
您需要像上述方法一样使用网络方法。
答案 1 :(得分:0)
问题是,您正在尝试解析请求正文,就好像它是表单编码的那样,而不是。您已使用JSON传递数据,因此您需要适当地解析它。
在C#中使用以下内容,使用Json.NET从JSON读取请求变量:
protected void Page_Load(object sender, EventArgs e)
{
string requestBody = StreamReader(Request.InputStream).ReadToEnd();
dynamic parsedBody = JsonConvert.DeserializeObject(requestBody);
string test = parsedBody.LayerName;
}
答案 2 :(得分:0)
您需要对值进行字符串化然后发送,它才能正常工作
function GetLayerGeometries(LayerName) {
var data;
$.ajax({
url: 'GetLayerGeometries.aspx/GetLayerGeometry',
data: { LayerName: JSON.stringify(LayerName) }, // make this change
async: false,
success: function (resp) {
data = resp;
callback.call(data);
},
error: function () { }
});
return data;
}