我在C#中有一个方法,它创建用户凭据的JSON对象。以下是CS文件。
public string CreateLoginjson(string strErrorType, bool blIsAuthenticated)
{
StringBuilder sbLoginJson = new StringBuilder();
if (blIsAuthenticated)
{
sbLoginJson.Append("{LoginSuccess:1");
}
else
{
sbLoginJson.Append("{LoginSuccess:0");
}
if (strErrorType != string.Empty)
{
if (strErrorType.TrimEnd(new char[] { ',' }) == "Token" ||
strErrorType.TrimEnd(new char[] { ',' }) == "BlankToken")
{
sbLoginJson.Append(",txtTestTokenNumber1:\"Error\"");
sbLoginJson.Append(",txtTestTokenNumber2:\"Error\"");
sbLoginJson.Append(",txtTestTokenNumber3:\"Error\"");
sbLoginJson.Append(",txtTestTokenNumber4:\"Error\"");
}
if (strErrorType.TrimEnd(new char[] { ',' }) == "Password")
{
sbLoginJson.Append(",txtPassword:\"Error\"");
}
if (strErrorType.TrimEnd(new char[] { ',' }) == "UserName")
{
sbLoginJson.Append(",UserName:\"Error\"");
}
string strLoadErrorControlMessage = LoadErrorControl(strErrorType,
string.Empty);
if (strLoadErrorControlMessage!= string.Empty)
{
sbLoginJson.Append(",ErrorMessage:
'" + strLoadErrorControlMessage + "'");
}
}
sbLoginJson.Append("}");
var LoginJson = sbLoginJson.ToString();
return LoginJson;
}
现在,我需要将LoginJson传递给JS函数,该函数检查是否提供了不正确的凭据,此函数找到控件并向其添加属性JS
function GetLoginJson(strLoginJson) {
if (strLoginJson != '' && strLoginJson != undefined) {
var objLoginJson = strLoginJson;
if (objLoginJson.LoginSuccess == "1") {
}
else if (objLoginJson.LoginSuccess == "0") {
if (objLoginJson.txtUserName != ''
&& objLoginJson.txtUserName != undefined)
{
$('#txtUserName').attr("class", objLoginJson.txtUserName);
}
else
{
$('#txtUserName').attr("class", "Input");
}
if (objLoginJson.txtPassword != ''
&& objLoginJson.txtPassword != undefined)
{
$('#txtPassword').attr("class", objLoginJson.txtPassword);
}
else
{
$('#txtPassword').attr("class", "Input");
}
if (objLoginJson.txtTestTokenNumber1 != ''
&& objLoginJson.txtTestTokenNumber1 != undefined)
{
$('#txtTestTokenNumber1').attr("class",
objLoginJson.txtTestTokenNumber1);
}
else
{
$('#txtTestTokenNumber1').attr("class", "Error");
}
if (objLoginJson.txtTestTokenNumber2 != ''
&& objLoginJson.txtTestTokenNumber2 != undefined)
{
$('#txtTestTokenNumber2').attr("class",
objLoginJson.txtTestTokenNumber2);
}
else
{
$('#txtTestTokenNumber2').attr("class", "Error");
}
if (objLoginJson.txtTestTokenNumber3 != '' &&
objLoginJson.txtTestTokenNumber3 != undefined) {
$('#txtTestTokenNumber3').attr("class",
objLoginJson.txtTestTokenNumber3);
}
else
{
$('#txtTestTokenNumber3').attr("class", "Error");
}
if (objLoginJson.txtTestTokenNumber4 != '' &&
objLoginJson.txtTestTokenNumber4 != undefined) {
$('#txtTestTokenNumber4').attr("class",
objLoginJson.txtTestTokenNumber4);
}
else
{
$('#txtTestTokenNumber4').attr("class", "Error");
}
$('#ErrorControl').html('');
}
}
}
我想将CS中的JSON变量传递给这个jQuery语句`$('#ErrorControl')。html('');'
谢谢
如果用户提供所有信息并点击某些内容(任何控件),您可以从jquery发出ajax请求。如果从CS返回一些错误消息,则可以直接使用该消息
$( '#ErrorControl')。HTML(response.d)
d =“你从CS返回的字符串”。
其中response是您的成功函数的参数。 d是接收对象的默认属性(变量)。
如果您不想直接显示字符串,请使用返回的数据并调用另一个javascript函数。
谢谢
首先,您可以尝试使用qazxsw poi(检查链接)将任何对象序列化为JSON,然后将字符串响应发送到客户端。
对于服务器和客户端之间的通信,您可以使用调用webservice(f.e.)的jquery的ajax调用,或者如果您构建ASP.NET站点或应用程序,则可以使用PageMethods并直接从javascript调用它。
如果您对PageMethods选项感兴趣,这里有一个非常好的和简单的JavaScriptSerializer。
user1502890,
我真的不知道C#,但看起来你正试图直接构建一个JSON字符串。构建一个对象然后使用内置语言命令或实用程序方法将其字符串化为JSON更为正常(也更容易和更可靠)。我想这在C#中一定是可行的。
假设凭证字段的格式为tutorial,服务器端脚本可以作为相对URL“myCredentialsChecker.xtn”,那么jQuery将是这样的:
id="credentialsForm"
笔记
$(function() {
function loginResponse(j) {
j = j || {};
if (j.LoginSuccess) {
//...
}
else {
$('#txtUserName').attr("class", j.txtUserName ? j.txtUserName : "Input");
$('#txtPassword').attr("class", j.txtPassword ? j.txtPassword : "Input");
$('#txtTestTokenNumber1').attr("class", j.txtTestTokenNumber1 ? j.txtTestTokenNumber1 : "Error");
$('#txtTestTokenNumber2').attr("class", j.txtTestTokenNumber2 ? j.txtTestTokenNumber2 : "Error");
$('#txtTestTokenNumber3').attr("class", j.txtTestTokenNumber3 ? j.txtTestTokenNumber3 : "Error");
$('#txtTestTokenNumber4').attr("class", j.txtTestTokenNumber4 ? j.txtTestTokenNumber4 : "Error");
$('#ErrorControl').html('');
}
}
$("#credentialsForm").on('submit', function() {
$.ajax({
url: "myCredentialsChecker.xxx",
data: $(this).serialize(),
type: 'POST', // or 'GET'
dataType: 'json',
success: function(j) {
loginResponse(j);
),
error: function() {
loginResponse();
}
});
return false;
});
});
条款中的所有内容都如上所述简化,因为else{...}
和''
都是假的,所以简单地测试undefined
就可以完成这项工作。 foo
的三元交替也可以实现紧凑的代码。我终于写道:CS文件为
if(){...} else{...}
JS档案:
public string CreateLoginjson(string strErrorType, bool blIsAuthenticated)
{
StringBuilder sbLoginJson = new StringBuilder();
if (blIsAuthenticated)
{
sbLoginJson.Append("{LoginSuccess:1");
}
else
{
sbLoginJson.Append("{LoginSuccess:0");
}
if (strErrorType != string.Empty)
{
if (strErrorType.TrimEnd(new char[] { ',' }) == "Token" || strErrorType.TrimEnd(new char[] { ',' }).Split(new char[] { ',' }).Contains("BlankToken"))
{
sbLoginJson.Append(",txtTestTokenNumber1:\"Error\"");
sbLoginJson.Append(",txtTestTokenNumber2:\"Error\"");
sbLoginJson.Append(",txtTestTokenNumber3:\"Error\"");
sbLoginJson.Append(",txtTestTokenNumber4:\"Error\"");
}
if (strErrorType.TrimEnd(new char[] { ',' }) == "Password" || strErrorType.TrimEnd(new char[] { ',' }).Split(new char[] { ',' }).Contains("BlankPassword"))
{
sbLoginJson.Append(",txtPassword:\"Error\"");
}
if (strErrorType.TrimEnd(new char[] { ',' }) == "UserName" || strErrorType.TrimEnd(new char[] { ',' }).Split(new char[] { ',' }).Contains("BlankUserName"))
{
sbLoginJson.Append(",txtUserName:\"Error\"");
}
string strLoadErrorControlMessage = LoadErrorControl(strErrorType, string.Empty);
if (strLoadErrorControlMessage != string.Empty)
{
PageTestApplicationLogin objPageTestApplicationLogin = new PageTestApplicationLogin(objClientConfiguration);
sbLoginJson.Append(",ErrorMessage:'" + objPageTestApplicationLogin.GetTestApplicationLoginErrorHtml("", strLoadErrorControlMessage).Replace("'", "\"") + "'");
}
sbLoginJson.Append("}");
}
var LoginJson = sbLoginJson.ToString();
return LoginJson;
}
谢谢大家的建议..干杯......