JQuery Ajax ile yük PHP işlevi

3 Cevap php

I Videos.php denir belgemin üst yüklenen bir dosya var. O dosyanın içinde böyle getYoutubeVideos gibi çeşitli fonksiyonları vardır. Bazı sayfalarda, bu görevi üzerine (50'ye kadar) birkaç kez aramak gerekir ve tabii ki yükleme süreleri üzerinde önemli lag yaratır. Bu yüzden gerek (birisi gösteri videoları butonuna tıkladığında) olduğunda, bu işlevi çağırmak için nasıl anlamaya çalışıyorlar. JQuery en ajax yetenekleri ile çok az deneyime sahip. Ben böyle bir şey içinde yapılacak ajax arama istiyorum:

           jQuery('a[rel=VideoPreview1).click(function(){
                jQuery ("a[rel=VideoPreview1]").hide();
                jQuery ("a[rel=HideVideoPreview1]").show();
                jQuery ("#VideoPreview1").show();

                                //AJAX STUFF HERE

                preventDefault();
            });

Ok I have created this based on the responses, but it is still not working:

jQuery Code:

        jQuery(document).ready(function(){ 

            jQuery("a[rel=VideoPreview5]").click(function(){
                jQuery("a[rel=VideoPreview5]").hide();
                jQuery("a[rel=HideVideoPreview5]").show();
                jQuery.post("/Classes/Video.php", {action: "getYoutubeVideos",
artist: "Train", track: "Hey, Soul Sister"},
                    function(data){
                        jQuery("#VideoPreview5").html(data);
                    }, 'json');
                jQuery("#VideoPreview5").show();
                preventDefault();
            });
            jQuery("a[rel=HideVideoPreview5]").click(function(){
                jQuery("a[rel=VideoPreview5]").show();
                jQuery("a[rel=HideVideoPreview5]").hide();
                jQuery("#VideoPreview5").hide();
                preventDefault();
            });
        });


And the PHP code:

    $Action = isset($_POST['action']);
    $Artist = isset($_POST['artist']);
    $Track = isset($_POST['track']);
    if($Action == 'getYoutubeVideos')
    {
        echo 'where are the videos';
        echo json_encode(getYoutubeVideos($Artist.' '.$Track, 1, 5, 'relevance'));
    }

3 Cevap

Ok here is what ended up working:
PHP CODE

    $Action = isset($_POST['action']);
    if($Action == 'getYoutubeVideos')
    {
      getYoutubeVideos($_POST['artist'].' '.$_POST['track'], 1, 5, 'relevance');
    }


JQUERY

        jQuery.ajax({
          type: "POST",
              url: "/Classes/Video.php",
          data: "action=getYoutubeVideos&artist=artist&track=track",
          success: function(data){
             jQuery("#VideoPreview1").html(data);
        }
        });

asıl sorun PHP ile çünkü json kodlama, json bunu yapmanın Hte daha iyi bir yolu ise, ben gerçekten de jQuery.post işlevini kullanabilirsiniz emin, rahatsız edici değildi. Herkes yapıyorum yöntemi ile herhangi bir güvenlik sorunları hakkında bilen varsa, bana bildirin lütfen. Olsa iyi görünüyor.

$.post('Videos.php', {
    'action': 'getYoutubeVideos'
}, function(data) {
    // do your stuff
}, 'json');

Php kod olarak, böyle bir şey yapın:

$action = isset($_POST['action'])? $_POST['action'] : '';
if($action == 'getYoutubeVideos')
{
    echo json_encode(getYoutubeVideos());
}

Sonra data JavaScript işlevi) (getYoutubeVideos tarafından döndürülen dizi / nesne / değer olacaktır.

ThiefMaster açıklar gibi JS düşeni yapmak istiyorum, ama php kısmı i biraz farklı ele olacaktır.

Ben böyle bir şey yapardı:

if(isset($_POST['action'], $_POST['par1'], $_POST['par2'])
{
    $action = $_POST['action'];
    $result = $this->$action($_POST['par1'], $_POST['par2]);
    echo json_encode(result);
}

Ama kullanıcı tarafından denilen olmamalıdır sınıfta bazı yöntemler varsa, yalak manipule POST veri, daha sonra JavaScript çağırabilir yöntemleri beyaz listeye bazı yol gerekir, dikkatli olun. Sen yöntemler yani önek ile yapabilirsiniz:

 $this->jsMethod.$action(....);

ya da eğer / switch koşul göre basit.