ヒットしていないコードの中にWebMethod
があります。私はたくさんのGoogle検索をして、このような質問をたくさん見つけました。私はすべての提案を試みました。aspx codebehindのWebメソッドがヒットしない
IDE:Visual Studioの2017 フレームワーク:4.0 jQueryのバージョン:3.1.1 プロジェクトタイプ:Webフォーム(ええ、私は私の最愛のMVCを逃すが、それは私のせいではない!)
エラー:
呼び出され{"Message":"Invalid web service call, missing value for parameter: \u0027id\u0027.","StackTrace":" at System.Web.Script.Services.WebServiceMethodData.CallMethod(Object target, IDictionary
2 parameters)\r\n at System.Web.Script.Services.WebServiceMethodData.CallMethodFromRawParams(Object target, IDictionary
2 parameters)\r\n at System.Web.Script.Services.RestHandler.InvokeMethod(HttpContext context, WebServiceMethodData methodData, IDictionary`2 rawParams)\r\n at System.Web.Script.Services.RestHandler.ExecuteWebServiceCall(HttpContext context, WebServiceMethodData methodData)","ExceptionType":"System.InvalidOperationException"}
URL:?{: "chkEditable"、 "wasChecked": "上"、 "ID"}私は2つのチェックボックスのいずれかをクリックすると
、私はクロームに次のエラーを取得するhttp://localhost:65050/Default.aspx/Save GETコンソル
GET http://localhost:65050/Default.aspx/Save ?{%22id%22:%22chkEditable%22,%22wasChecked%22:%22on%22} 500 (Internal Server Error) jquery-3.1.1.min.js:4
は、ここに私のaspxコードです:
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs"
Inherits="TesteWebMethod.Default" %>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
<script src="Scripts/jquery-3.1.1.js"></script>
<script src="Scripts/jquery-3.1.1.min.js"></script>
<script>
$(document).ready(function() {
$('#chkVisible').change(function() {
Save('chkVisible', $('#chkVisible').val());
});
$('#chkEditable').change(function() {
Save('chkEditable', $('#chkEditable').val());
});
});
function Save(_id, _state) {
var pageUrl = '<%= ResolveUrl("~/Default.aspx")%>';
var _data = { "id": _id, "wasChecked": _state };
$.ajax({
type: "GET",
url: pageUrl + "/Save",
data: JSON.stringify(_data),
contentType: "application/json; charset=utf-8",
dataType: "json",
success: OnSuccess,
failure: OnFailure
});
}
function OnFailure(response) {
console.log('falha');
alert(response.d);
}
function OnSuccess(response) {
console.log('sucesso');
alert(response.d);
}
</script>
</head>
<body>
<form id="form1" runat="server">
<asp:CheckBox runat="server" AutoPostBack="false" ID="chkVisible" Text="Visivel" />
<asp:CheckBox runat="server" AutoPostBack="false" ID="chkEditable" Text="Editavel" />
</form>
そしてここでは、コードビハインド
using System;
using System.Web.Script.Serialization;
using System.Web.Script.Services;
using System.Web.Services;
namespace TesteWebMethod
{
public partial class Default : System.Web.UI.Page
{
[WebMethod(true)]
[ScriptMethod(UseHttpGet = true, ResponseFormat = ResponseFormat.Json)]
public static string Save(string id, string wasChecked)
{
bool b = wasChecked == "on";
string data = "Id " + (b ? "was checked" : "was unchecked");
JavaScriptSerializer TheSerializer = new JavaScriptSerializer();
var json = TheSerializer.Serialize(data);
return json;
}
protected void Page_Load(object sender, EventArgs e)
{
}
}
}
私は本当にこの上で捕まってしまったです。誰かが私が間違っていることを教えてもらえますか?
JSONデータは、クエリ文字列にそれを作っている場合でも、私はこの方法が正しくパラメータにそれを解析することを信じていないでしょう。 –
ありがとう@Kevin Hist。ある時点で私は失われてしまったということを、私がコードに多くの変更を加えてやっていると思います。私はちょうどGETからPOSTに変更して、うまくいきました。どうもありがとう。 –