繁体   English   中英

如何在代码后面访问JavaScript对象(C#/ ASP.NET)

[英]How to access JavaScript objects in code behind (C#/ASP.NET)

我正在使用Web工具包浏览器本地数据库来临时存储一些数据,当我想访问它时,我创建了一个对象

function patientSelectHandler(transaction, results) {
        var row = results.rows.item(0);
        var patient = new Object();

        patient.name = row['name']
        patient.dob = row['dob']
        patient.gender = row['gender']
}

有没有办法从后面的代码访问这个对象,而不必填充textfields / labels / dropdowns然后从那里获取值?

现在的例子是:

function patientSelectHandler(transaction, results) {
        var row = results.rows.item(0);
        var patient = new Object();

        patient.name = row['name']
        patient.dob = row['dob']
        patient.gender = row['gender']


        $('#txtPatientName').val(patient.name);
        $('#txtDOB').val(patient.dob);
    $('#ddlGender').val(patient.gender);
}

编辑:

稍微更新我的例子:

    var patientString = JSON.stringify(patient);
    var inputField = $("<input type='text' name='hiddenField" + i + "' id='hiddenField" + i + "'></input>");
    $('#Patients').append(inputField);
    $('#hiddenField' + i).val(patientString);

然后是代码背后的循环

            for (int i = 0; i <= count; i++)
            {
                string n = String.Format("{0}", Request.Form["hiddenField" + i]).ToString();
                JObject o = JObject.Parse(n);
                string name = (string)o["name"];
//now I can get all values into variables and use them when calling the web service
}

您无需出于任何原因将其设置为文本字段...

我可能会做类似的事情

var patientString = JSON.stringify(patient);
$('#myHiddenInput').val(patientString);

否则,根据应用程序的流程,您可以使用AJAX将该对象以字符串形式发布到服务器。

然后,您将不得不使用一种方法将该字符串解析回对象形成。 我不熟悉c#,但我确信很容易找到或写出这样的方法。

如果要发送许多字段,则可以对所有内容进行JSON编码并将其放入单个多行文本字段(textarea)。 然后,您可以在服务器上轻松解码它。

请记住 -

  1. 当您的服务器代码运行时,它会构建一个页面对象,然后使用该对象生成要发送到浏览器的html。 生成html后,页面对象将被销毁。 当浏览器显示您的页面时,您的服务器资源不再存在。
  2. 当浏览器提交页面请求时,它会销毁它显示的任何页面的DOM。 所以当你的服务器启动时,你的javascript就不再存在了。

因此,这两个系统通常是完全分开的。 你可以通过在客户端和服务器之间传递ajax json消息来解决这个问题。

我会使用AJAX post将JSON对象存储在服务器上。

var str = JSON.stringify(...);

$.ajax({

    type: "POST",

    contentType: "application/json; charset=utf-8",

    url: "Default.aspx/validate",

    data: str,

    error: function(XMLHttpRequest, textStatus, errorThrown) {

        ...
    },

    success: ajaxCallback,

    dataType: "json"

});

并在服务器上

[WebMethod]
public static string validate(Dictionary<string, object> patient)
{
    ...
    //return your JSON response
}

然后只需遍历服务器上的Dictionary对象(键 - 对象参数,值 - 它的值)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM