как использовать json_encode () в массиве php, а также как использовать jQuery.getJSON ()? - PullRequest
0 голосов
/ 30 октября 2011

http://api.jquery.com/jQuery.getJSON/

http://www.w3schools.com/jquery/ajax_getjson.asp

http://api.jquery.com/jQuery.parseJSON/

http://www.json.org/js.html

http://php.net/manual/en/function.json-encode.php

http://techblog.willshouse.com/2009/06/12/using-json_encode-and-json_decode-in-php4/

Это сайты, которые я исследовал чаще всего, пытаясь обернуть мою голову вокруг json

Это мой php

$fvsc=array();
query_posts('meta_key=featuredv');  
if (have_posts()) :  
    while (have_posts()) : 
        the_post();
        $fvsc []= "\n" . '<div id="featuredv-' . "$wp_query->current_post\">" . "$post->post_content;" . '</div>';
    endwhile;  
endif;
$jsonObject= json_encode($fvsc);   

а это мой .js

jQuery(document).ready(function($){
    jQuery.getJSON("<?php TEMPLATEPATH . '/featuredv.php'?>",function(data){
        var fvsJA=jQuery.parseJSON(<?php $jsonObject; ?>);
        var fts = $("#ttContent>[id^=featuredt]");  
        var fvs = $("#inCenter>[id^=featuredv]");
    });
    fts.click( function(){   
        $("#inCenter>[id^=featuredv]").replaceWith( function(){
            $(fvsJA).eq(fts.index(this))
        });
    });

Я пытаюсь превратить мой массив $ fvsc в массив jQuery. $ fvsc - это массив видео, при нажатии на fts он должен взять содержимое div и заменить его другим видео с тем же индексом, что и при нажатии fts. Если вы просто загрузите все fts и fvs в одно место, вы можете использовать функцию щелчка здесь, и она прекрасно работает, но если вы выводите 5 видео, а затем 10 и так далее, сайт загружается все хуже и хуже. Я подумал, что если я смогу преобразовать свой массив php в объект jquery, который загружает строки json, то по щелчку преобразуется обратно в объект и заменяет содержимое div, нагрузка значительно ухудшится.

1 Ответ

0 голосов
/ 30 октября 2011

Я вижу несколько проблем в вашем коде:

  1. $fvsc []= "\n" . '<div id="featuredv-' . "$wp_query->current_post\">" . "$post->post_content;" . '</div>';

    Не думаю, что вы можете заключить переменную класса в двойные кавычки.Должно быть что-то вроде этого:

    $fvsc []= '<div id="featuredv-' . $wp_query->current_post . '">' . $post->post_content . '</div>';
    
  2. В вашем JS есть проблема, в частности, способ доступа к URL.Видите ли, Ajax в WordPress немного отличается от обычного PHP.Смотрите здесь для получения дополнительной информации: https://wordpress.stackexchange.com/questions/9231/whats-the-preferred-method-of-writing-ajax-enabled-plugins/9236#9236

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