2013-10-24 74 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; 
} 

我相信你可以弄明白这一点...显示一些努力..并且不要害怕问你是否还不明白..只要你尝试。