Как передать объект json в качестве параметра другому методу - PullRequest
0 голосов
/ 03 мая 2011

Я использую два 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 ]

3 голосов
/ 03 мая 2011

Объект 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 голос
/ 03 мая 2011
$.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 в моем методе - мое значение для Джейсона

0 голосов
/ 03 мая 2011

Эта часть кода очень неправильная:

var rbutton = document.createElement("input");
rbutton.type = "a";
rbutton.href = function(){
    javascript:loadModify(jsonobj);
};
  1. Вы создаете элемент <input>, устанавливая его type в a. Этот тип не существует. Это должен быть либо text, password, скрытый, button, submit или reset.
  2. Кажется, вы думаете, что создали ссылку сейчас, когда пытаетесь установить атрибут href. Здесь две вещи не так:
    1. Элемент <input> не имеет атрибута href.
    2. Значением атрибута href должна быть строка , а не функция.
  3. Метка javascript: здесь не нужна.
  4. Вы передаете jsonobj в функцию, но нигде не определяете ее.

Я думаю, что лучше создать <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
};
0 голосов
/ 03 мая 2011

Потенциальные проблемы, которые я вижу в коде, который вы разместили:

Где переменная index из цикла while объявлена, инициализирована и увеличена / обновлена?

Внутри цикла while вы пытаетесь создать элемент «input» типа «a» и с атрибутом «href», оба из которых недопустимы для элементов «input». Возможно, вам действительно следует создать элемент «a»?

Предполагая, что у вас есть элемент, не должен ли атрибут 'href' быть строкой? Вы назначаете его для указания на функцию.

Ваша функция loadmodify () объявляется строчными, но вызывается заглавными буквами "M".

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...