2013-10-24 76 views
0

我有這個JS函數,我正在尋找最簡單的方法發送一個變量到PHP並讓PHP返回一個數組到我的JS。我有第二部分,我只需要幫助發送變量。這裏是我的功能:發送JS變量到PHP點擊

function myEvent(){ 
     //console.log(uploaded); 
      var length = uploaded.length; 
      var content = document.getElementById("Profile"); 
      if(length == 0){ 
       content.innerHTML = '<p style="text-align:center"><b> You uploaded no events. </b></p>'; 

      } 
      else { 
       content.innerHTML = " "; 
      for(var i=0; i<length;i++){ 
       var entry = document.createElement('li'); 
       var EID = uploaded[i][0]; 
       entry.innerHTML= '<a href="eventList2.html">'+uploaded[i][1]+'</a>​'; 
       content.appendChild(entry); 
       } 
       return false; 
      } 
    } 

我希望能夠發送EID這是一個唯一的ID到PHP腳本每次我點擊鏈接。

任何幫助?我使用Jquery,但我不太熟悉它。如果有單獨使用JS的選項,我會非常感激。

+0

您需要使用AJAX將值發送到服務器端腳本。它當然可以用直接的Javascript完成,但使用jQuery更容易。 – Cfreak

+0

我明白,但我不太熟悉ajax。你能告訴我一個與我的問題有關的例子嗎?謝謝 – Kay

+1

您需要搜索堆棧,因爲我剛剛發佈了與此類似的答案。然而,這裏是一個嘖嘖http://www.tutorialspoint.com/jquery/ajax-jquery-post.htm – xlordt

回答

1

你可以使用Ajax來做到這一點。還有另一種非常簡單的方法來發送任何服務器上的數據到PHP腳本(同一個域或沒有),同時使該PHP腳本與你的頁面互動

首先創建一個腳本標籤:

var tag = document.createElement('script'); 

的該標籤的src是PHP腳本的URL將接收變量:

var myVar = 'foo'; 
tag.src = '/path/to/my/script.php?variable='+myVar; 

你的腳本標籤添加到DOM,要求它

document.getElementsByTagName('head')[0].appendChild(tag); 

在PHP腳本接收的變量和服務器端做任何它應該用它做什麼,以及可選可以呼應,將頁面之後上運行任何JavaScript:

<?php 
echo "alert('".$_GET['variable']."')"; 

這幾乎是它,警告,請注意,這只是一個簡單的例子,要在生產站點上實現這樣的事情,您需要確保這樣做不會使您的網站打開XSS攻擊,代碼注入等等......如何做到這一點這裏正在討論的內容,但請注意

+0

感謝您的回覆,但是當我嘗試在php中提醒該變量時,它警告未定義。我試着把你放在這裏。爲什麼會發生這種情況? – Kay

+0

做彈出警報,但說「未定義」?也許可能是引用缺失,請在瀏覽器窗口中打開腳本網址,並檢查 –

+0

沒有錯誤。這裏是我的代碼,我在我的鏈接上加載了一個函數load()。 \t tag.src ='eLoad.php?EID = hello'; \t document.getElementsByTagName('head')[0] .appendChild(tag); \t }然後我在PHP中迴應它,看它是否被髮送,我得到了undefined – Kay

0

使用JavaScript的XMLHttpRequest向運行PHP的服務器發送消息。當PHP腳本響應時,XMLHttpRequest對象會讓你知道,你將能夠獲得XMLHttpRequest.responseText

這將是一個好主意,讓PHP以JSON響應,它可以輕鬆完成。然後你可以使用JavaScript的JSON.parse函數解析responseText並使用它。

以下兩篇文章將向您展示如何使用標準對象。

https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest

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

你只需要確保你不要試圖跟一個不同的網站比你的頁面加載從的人,除非你想了解所有關於跨域要求。

1

確保您查看此使用螢火蟲,或任何才能看到返回的結果類似,在jQuery的做功能,那麼你可以做數據[0],等等的陣列

HTML

<!DOCTYPE html> 
<html> 
    <head> 
    <title>JQuery Test</title> 
    <meta charset="utf-8"> 
    <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script> 
    <script src="myjs.js"></script> 
    </head> 

    <body> 
    <button id="sendData">Send Data</button> 
    </body> 
</html> 

JS

$(document).ready (function(){ 
    $("#sendData").on ("click", function(){ 
      jQuery.ajax ({ 
       url: "index.php", 
       type: "POST", 
       data: {returnArray: 1} 
      }).fail (function(){ 
       console.log ("failed"); 
      }).done (function (data){ 
       console.log (data); 
      }); 
    }); 
}); 

PHP

if (isSet ($_POST ['returnArray'])) 
{ 
    $a = array ("a", "b", "c", "d"); 

    header('Content-type: application/json'); 
    echo json_encode ($a); 

    exit; 
} 

我相信你可以弄明白這一點...顯示一些努力..並且不要害怕問你是否還不明白..只要你嘗試。