2011-10-31 21 views
2

我在一個體面的項目的最後一站(至少對我來說),我遇到了一個問題,我的ajax請求沒有發送$ _SESSION數據到他們正在加載的URL。我試圖使用Gdata自動上傳YouTube上的文件。我使用jquery做了一個ajax請求,但是當我在我的ajax中測試$ _SESSION ['sessionToken']時,我沒有任何收穫。

這裏是我的代碼,該代碼調用了YouTube的上傳腳本:

function uploadVideos(id, upload, selected) { 
     var status = document.getElementById('currentStatus'); 
     var fields = upload[id].split(":", 2); 

     var token="<?php echo $_GET['token'];?>"; 
     var dataString = 'videoId='+ fields[0]; // + '&token=' + token; 

     id++; 
     status.innerHTML = "<b>Videos for Upload:</b>&nbsp;&nbsp;&nbsp; <h3 class='status'>Currently Updating Bout #" + fields[1] + " (" + id + " of " + upload.length + " videos)</h3>"; 

     $.ajax({ 
      type: "GET", 
      url: "upload.php", 
      data: dataString, 
      success: function(txt) { 
       if (txt != 'Success') { 
        alert(txt); 
       } 

       if (id < upload.length) { 
        uploadVideos(id, upload, selected); 

       } else { 

        status.innerHTML = "<b>Videos for Upload:</b>&nbsp;&nbsp;&nbsp; <h3 class='status'>Completed</h3>"; 
       } 

       //deselect the checkbox 
       document.videos.video[selected[id-1]].checked = false; 
       document.videos.video[selected[id-1]].style.display = 'none'; 
      }, 
      async: true 

     }); 
} 

我如何發送sessionToken一起upload.php的,它認爲我驗證?

+0

我可能在這裏包含了更多的代碼,這真的很有用。我基本上只是想要一種方法來添加諸如「session:sessionString」到.ajax請求。 – Adam

+0

爲防萬一還不清楚,$ _SESSION中的任何內容都只在服務器上,而不在客戶端上。您需要確保令牌正在通過瀏覽器發送,通常通過cookie。 – hafichuk

+0

我知道我有cookie。我可以在我包含的腳本中回顯「$ _SESSION ['sessionToken'],並且我看到了令牌的值。我想把這個值也放在我的ajax請求的頭部,但我無法弄清楚 – Adam

回答

2

第一個: 您沒有發送「令牌」變量與您的Ajax調用。您正在發送不包含令牌變量的變量dataString。您有評論令牌一部分了...

var token="<?php echo $_GET['token'];?>"; 
var dataString = 'videoId='+ fields[0]; // + '&token=' + token; 

二: 您只能使用POST發送的Ajax或GET

在你的Ajax調用

您使用GET,所以你應該檢查$ _得到;不是$ _SESSION。

+0

我已將GET標記註釋掉,因爲它是一次性使用標記每Gdata。我可以得到它的工作一個上傳,但後來上傳失敗。你可以看到我的uploadVideos()函數是遞歸的,所以我需要能夠多次調用它。Gdata需要使用會話令牌發生,我的請求仍然是GET或P OST(GET在這種情況下),但我應該能夠設置cookie。對? – Adam

+1

嘗試從您的upload.php中調用session_start(),然後再從$ _SESSION – Christian

+0

Ya中讀取。我同意@Christian。你是否記得在需要訪問會話的所有地方調用session_start()? Ajax應該仍然發送會話標識,因爲它是調用腳本的瀏覽器。 – iWantSimpleLife