JQuery + Json - первые шаги с примером - PullRequest
1 голос
/ 22 октября 2010

Мне нужно (недавно) получить массив с сервера после вызова ajax, созданного jquery.Я знаю, что я могу сделать это с помощью JSON.Но я не знаю, как реализовать это с JQuery (я новичок в JSON).Я пытаюсь найти в интернете какой-то пример, но я не нашел его.

Это код:

// js-jquery function
function changeSponsor() {
    $.ajax({
        type: 'POST',
        cache: false,
        url: './auth/ajax.php',
        data: 'id=changespon',
        success: function(msg) {
            // here i need to manage the JSON object i think
        }
    });
    return false;
}

// php-server function
if((isset($_POST['id'])) && ($_POST['id']=="changespon")) {
    $linkspon[0]="my ";
    $linkspon[1]="name ";
    $linkspon[2]="is ";
    $linkspon[3]="marco!";

    echo $linkspon;
}

на самом деле, мне нужно получить массив $ linkspon после вызова ajaxи управлять этим.Как это можно сделать?Я надеюсь, что этот вопрос понятен.Спасибо

РЕДАКТИРОВАТЬ

ОК.теперь это моя функция jquery.Я добавляю функцию $ .getJSON, но думаю, что не в том месте:)

function changeSponsor() {
    $.ajax({
        type: 'POST',
        cache: false,
        url: './auth/ajax.php',
        data: 'id=changespon',
        dataType: 'json',
        success: function(data) {
            $.getJSON(url, function(data) { alert(data[0]) } ); 
        }       
    });

    return false;
}

Ответы [ 2 ]

5 голосов
/ 22 октября 2010

Две вещи, которые вам нужно сделать.

  1. Вам необходимо преобразовать ваш массив в JSON, прежде чем выводить его в PHP.Это легко сделать с помощью json_encode, если у вас последняя версия PHP (5.2+).Для JSON также рекомендуется использовать именованные пары ключ / значение, а не числовой индекс.
  2. При вызове jQuery .ajax установите для dataType значение «json», чтобы он знал, какой тип данныхожидать.

    // JS/jQuery
    function changeSponsor() {
        $.ajax({
            type: 'POST',
            cache: false,
            url: './auth/ajax.php',
            data: 'id=changespon',
            dataType: 'json',
            success: function(data) {
                console.log(data.key); // Outputs "value"
                console.log(data.key2); // Outputs "value2"
            }
        });
        return false;
    }
    
    
    // PHP
    if((isset($_POST['id'])) && ($_POST['id']=="changespon")) {
        $linkspon["key"]= "value";
        $linkspon["key2"]= "value2";
        echo json_encode($linkspon);
    }
    
3 голосов
/ 22 октября 2010

1) PHP: вам нужно использовать json_encode в вашем массиве.

например,

// php-server function 
if((isset($_POST['id'])) && ($_POST['id']=="changespon")) { 
    $linkspon[0]="my "; 
    $linkspon[1]="name "; 
    $linkspon[2]="is "; 
    $linkspon[3]="marco!"; 

    echo json_encode($linkspon); 
}

2) JQUERY:

use $.getJSON(url, function(data) {   whatever.... } );

Данные будут возвращены обратнов формате JSON.В вашем случае вы можете получить доступ к данным [0] «my»;

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