我正在尝试从我的aspx页面调用一个方法。这个方法可以在aspx.cs页面上找到,但它会引发错误。你明白出了什么问题吗?
ajax脚本
<script type="text/javascript">
function OnSucceeded(response) {
alert(response);
}
function OnFailed(error) {
alert(error);
} //Default.aspx
function insertMarker() {
var usernameName = 'username';
var usernameVal = document.getElementById('<%=hdnUsername.ClientID%>').value;
var latitudeName = 'latitudeStr';
var latitudeVal = document.getElementById('<%=hdnMarkerLatitude.ClientID%>').value;
var longituteName = 'longitudeStr';
var longitudeVal = document.getElementById('<%=hdnMarkerLongitude.ClientID%>').value;
var iconName = 'markerIcon';
var iconVal;
if (document.getElementById('blueMarker').checked) {
iconVal = 'images/blueMarker.png';
}
if (document.getElementById('greenMarker').checked) {
iconVal = 'images/greenMarker.png'
}
if (document.getElementById('pinkMarker').checked) {
iconVal = 'images/pinkMarker.png';
}
var titleName = 'name';
var titleVal = document.getElementById('<%=title.ClientID%>').value;
var descriptionName = 'description';
var descriptionVal = document.getElementById('<%=description.ClientID%>').value;
$.ajax({
type: "POST",
url: "mapping.aspx/insertNewMarker",
data: {"username" : usernameVal, "longitudeStr":longitudeVal, "latitudeStr" :latitudeVal, "markerIcon":iconVal, "name" : titleVal, "description" :descriptionVal},
contentType: 'application/json; charset=utf-8',
dataType: 'json',
error: function (XMLHttpRequest, textStatus, errorThrown) {
alert("Request: " + XMLHttpRequest.toString() + "\n\nStatus: " + textStatus + "\n\nError: " + errorThrown);
},
success: function (result) {
alert("We returned: " + result.d);
}
});
}
</script>
网站设计
保存标记
标题
描述
保存
Aspx.cs方法。
[ScriptService]
public partial class mapping: System.Web.UI.Page
{
[WebMethod]
private static void insertNewMarker(string username, string longitudeStr, string latitudeStr, string markerIcon, string name, string description)
{
//My Code
}
}
答案 0 :(得分:4)
您的服务器端网络方法不能私有,您必须将其更改为 public 。
来自MSDN documentation on webmethods:
在托管代码中创建Web服务时,请指明 通过放置,通过该Web服务可用的方法 在 Public 方法的方法声明之前的WebMethod属性。 私有方法不能作为Web服务的入口点 虽然它们可以在同一个类中,但Web服务代码可以 打电话给他们。
答案 1 :(得分:1)
像这样更改data
data:JSON.stringify({username : usernameVal, longitudeStr:longitudeVal, latitudeStr :latitudeVal, markerIcon:iconVal, name : titleVal, description :descriptionVal}),
您需要将数据传递为具有特定格式的json stirng
。如果您使用JSON.stringify
数据将被转发到json字符串,如果您不使用此数据,则必须通过此类every paremter and its value in quotes
。
data:"{username:'" + usernameVal + "',............}",