如何将json对象作为参数传递给另一个方法

时间:2011-05-03 05:32:07

标签: javascript json jsp

我使用两个jsp来搜索记录,另一个用于更新数据库的记录。搜索查询将返回一个json对象,其中包含所有搜索到的记录,我将动态生成行到表中进行显示。为了更新记录,我在每一行都保持链接。          在这里,我必须将json对象传递给更新的jsp文件以加载值。所以,我只是传递了json对象。但是,我无法处理json对象。帮帮我。谢谢。请找到以下代码:

function retrievesrchrec(){                 
    var result = xmlHttp.responseText;
    if(result.length>1){
        var dbRecords = JSON.parse(result);
        if(dbRecords)
        {
            while(dbRecords[index])
            {
                dbRecord= dbRecords[index];
                var rbutton = document.createElement("input");
                rbutton.type = "a";
                rbutton.href = function(){
                    javascript:loadModify(jsonobj);
                };

            }
        }
    }
}
function loadmodify(jsonobj){
    alert(jsonobj);
}

4 个答案:

答案 0 :(得分:3)

JSON对象不过是常规的javascript对象。如果将它作为参数传递给函数,它应该可以工作。问题出在其他地方。

试试这个版本:

function retrievesrchrec(){                 
    var result = xmlHttp.responseText;
    if(result.length>1){
        var dbRecords = JSON.parse(result);
        if(dbRecords)
        {
            var index=0;
            while(dbRecords[index])
            {
                dbRecord= dbRecords[index];
                var rbutton = document.createElement("A");
                rbutton.href = loadModify(dbRecord);
                index++;
             }
        }
    }
}
function loadModify(jsonobj){
    alert(JSON.stringify(jsonobj));
    alert(jsonobj.EnvLabel);
    return "http:\/\/www.example.com";
}

答案 1 :(得分:1)

$.ajax({
                type: "POST",
                url: "JSONService.asmx/TestJSON",
                data: '{"Name":"mohammad","Company":"Faraconesh"}',
                contentType: "application/json; charset=utf-8",
                dataType: "json"
});

和服务代码

public string TestJSON(string Name,string Company)
    {
        Employee e = new Employee();

        e.Name = Name;
        e.Company = Company;}

Name&我方法中的Company是我的jason abject值

答案 2 :(得分:0)

我在您发布的代码中可以看到的潜在问题:

来自while循环的'index'变量在哪里声明,初始化和递增/更新?

在while循环中,您尝试创建一个类型为'a'且具有'href'属性的'input'元素 - 这两个元素对'input'元素无效。也许你真的应该创造一个'a'元素?

假设你确实有一个元素,'href'属性不是一个字符串吗?您将其指定为指向函数。

您的'loadmodify()'函数全部以小写形式声明,但使用大写'M'调用。

答案 3 :(得分:0)

这部分代码非常错误:

var rbutton = document.createElement("input");
rbutton.type = "a";
rbutton.href = function(){
    javascript:loadModify(jsonobj);
};
  1. 您可以在<input>设置为type时创建a元素。此类型不存在。它必须是textpassword,隐藏,buttonsubmitreset
  2. 您似乎认为自己现在创建了一个链接,因为您正在尝试设置href属性。这里有两件事是错的:
    1. <input>元素没有href属性。
    2. href属性的值必须是字符串,而不是函数。
  3. 此处不需要标签javascript:
  4. 您正在将jsonobj传递给该函数,但您从未在任何地方定义它。
  5. 我认为您最好创建<button>并分配click处理程序:

    var rbutton = document.createElement("button");
    rbutton.append(document.createTextNode('Click me!')); // you need some text
    rbutton.onclick = function(){
        loadModify(dbRecord); // pass dbRecord here
    };