gpt4 book ai didi

javascript - 如何正确格式化使用 javascript 在服务器端传递的参数?

转载 作者:太空宇宙 更新时间:2023-11-03 18:27:52 24 4
gpt4 key购买 nike

我不知道如何让下面的代码在我的小演示 ​​ASP.NET 应用程序中工作,希望这里有人能提供帮助。

这是javascript:

function checkUserName() {
var request = createRequest();
if (request == null) {
alert("Unable to create request.");
} else {
var theName = document.getElementById("username").value;
var userName = escape(theName);
var url = "Default.aspx/CheckName";
request.onreadystatechange = createStateChangeCallback(request);
request.open("GET", url, true);
request.setRequestHeader("Content-Type", "application/json");
//none of my attempts to set the 'values' parameter work
var values = //JSON.stringify({userName:"userName"}); //"{userName:'temp name'}"; //JSON.stringify({ "userName":userName });
request.send(values);
}
}

这是我的 *.aspx.cs 类中的方法:

[WebMethod]
[ScriptMethod(UseHttpGet=true)]
public static string CheckName(string userName)
{
string s = "userName";
return s + " modified backstage";
}

当这段代码运行时我收到这个异常:

---------------------------
Message from webpage
---------------------------
{"Message":"Invalid web service call, missing value for parameter: \u0027userName\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"}
---------------------------
OK
---------------------------

我开始搜索 here ,然后继续讨论 SO 上的几个线程,尝试了引号和键值对的多种组合,但我尝试过的任何方法都没有奏效。

当我从 C# 方法和 request.send() 中删除参数时,我在我的 JS 回调中得到了一个我可以使用的响应。但是,一旦我尝试使用参数执行某些操作,就会出现上述异常。如果可能的话,我想知道如何在不使用 jQuery 的情况下做到这一点。

提前致谢。

最终版本使用 Alexei 的建议,我最终得到了以下有效的方法。 URL 在参数值的两端缺少撇号;这使通话无法接通。

function checkUserName() {
var request = createRequest();
if (request == null) {
alert("Unable to create request.");
} else {
var theName = document.getElementById("username").value;
var userName = encodeURIComponent(theName);
var url = "Default.aspx/CheckName?name='" + theName + "'";
request.onreadystatechange = createStateChangeCallback(request);
request.open("GET", url, true);
request.setRequestHeader("Content-Type", "application/json");
request.send();
}
}

最佳答案

request.send(values);

这不适用于“GET”。尝试

request.open("POST", url, true);

http://www.w3schools.com/ajax/ajax_xmlhttprequest_send.asp

关于javascript - 如何正确格式化使用 javascript 在服务器端传递的参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29828356/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com