JavaScript не обрабатывает все возвращаемые переменные JSON - PullRequest
0 голосов
/ 04 ноября 2011

У меня проблема с обработкой переменных json в javascript.

Проблема возникает, когда я пытаюсь отправить данные в класс php, а затем он должен вернуть 3 переменные, используя JSON, но Firebug + FirePHP сказал мне, что переменная JSON вернулась правильно. Затем, когда я пытаюсь сохранить каждую из них в разных переменных (3 возвращенные переменные json в 3 переменных javascript), я просто получаю первый параметр, а остальные два равны NULL.

Вы можете увидеть в следующем коде JavaScript:

function UpdateContact(ID)
{
    // get current Contact data
    var full_name,email,mobile;
    $.post("/Cards/index.php/Cont/GetContactInfo",{'id' : ID},
       function(data){
                full_name = data.full_name;
                email = data.email;
                mobile = data.mobile;
                   $( "#dialog2-form" ).html(
    '<p class="validateTips">All form fields are required.</p>'+
    '<form>'+
    '<fieldset>'+
        '<label for="name">Name</label>'+
        '<input type="text" name="Updatefull_name" id="Updatefull_name" class="text ui-widget-content ui-corner-all" value="'+full_name+'" /><br />'+
        '<label for="email">Email</label>'+
        '<input type="text" name="Updateemail" id="Updateemail" value="" class="text ui-widget-content ui-corner-all" value="'+data.email+'"/><br />'+
                '<label for="email">Mobile</label>'+
        '<input type="text" name="Updatemobile" id="Updatemobile" value="" class="text ui-widget-content ui-corner-all" value="'+data.mobile+'"/><br />'+
    '<input type="hidden" id="UpdateContactID" value="'+ID+'"></fieldset>'+
    '</form>'
);
   $( "#dialog2-form" ).dialog( "open" );
 }, "json");
}

Просто переменная full_name получает значение, но переменные email и mobile не получают никакого значения.

Функция PHP:

function GetContactInfo()
{
    $Contact = $this->Contacts->GetContacByID($this->input->post('id'));
    $data['full_name'] = $Contact->full_name;
    $data['email'] = $Contact->email;
    $data['mobile'] = $Contact->mobile;
    echo json_encode($data);
}

Примечание. Я использую CodeIgniter PHP Framework на локальном сервере XAMPP

1 Ответ

0 голосов
/ 04 ноября 2011

Перед использованием необходимо проверить наличие полей:

var field_to_read = some_default_value;
if (typeof data['name_of_field'] !== 'undefined') {
   field_to_read = data['name_of_field'];
}

Я предлагаю вам использовать конструкцию, аналогичную приведенной выше, для чтения ваших данных JSON.

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