2012-04-20 73 views
1

我有两个单独的页面,其中一个页面用于上载文件,另一个页面用于显示信息。

在imageupload.php页面,下面我有这个环节:

$_SESSION['fileImage']['name'] = $_FILES['fileImage']['name']; 

我也有一个JavaScript函数调用返回的JavaScript functiom:

<script language="javascript" type="text/javascript">window.top.stopImageUpload();</script> 

现在一个单独的页面上(QandATable.php),我有一个JavaScript函数,但我的问题是我怎么能在javascript函数中调用上面的$ _SESSION代码,所以我可以将它附加到$('。list')?

下面是javascript函数:

function stopImageUpload(success){ 

var result = ''; 
if (success == 1){ 
result = '<span class="msg">The file was uploaded successfully!</span><br/><br/>'; 
$('.listImage').append('<br/>'); 
      } 
else { 
result = '<span class="emsg">There was an error during file upload!</span><br/><br/>'; 
      } 

return true; 

    } 
+3

供参考: 'window.top.stopImageUpload;'什么也没做。我假设你的意思是'window.top.stopImageUpload();'? – 2012-04-20 21:54:11

+0

@火箭是的,对不起,这是一个错字 – user1341521 2012-04-20 21:55:32

+1

我相信你想使用ajax – 2012-04-20 21:55:56

回答

2

你不能,因为$ _SESSION是一个服务器端的变量,但您可以通过访问它。

对于可变

<script type="text/javascript" > 
    var session = <?php echo json_encode($_SESSION); ?>; 
</script> 

对于会话特定变量的整个会话。

<script type="text/javascript" > 
    var session_var = <?php echo json_encode($_SESSION['VAR_NAME']); ?>; 
</script> 

现在你有与信息Js变量称为会话。然而,在大多数情况下,将所有信息输出到公共页面并不可取。

+1

所以对于'$ _SESSION ['fileImage'] ['name'] = $ _FILES ['fileImage'] ['name'];',它会被编码为'var session = <?php echo json_encode($ _ SESSION [ 'fileImage'] ['name']?>;' – user1341521 2012-04-20 22:03:16

+0

当我在 – user1341521 2012-04-20 22:25:24

+0

以上包含代码时,我得到一个无效的正则表达式标志w错误什么是$ _SESSION ['fileImage'] ['name']返回php – 2012-04-21 15:47:16

0

你不能。 $_SESSION是一个PHP变量,并且该代码运行在服务器端。

您需要将值作为Javascript变量存储在PHP文件的输出中,然后在Javascript中访问该变量。

+1

'$ _SESSION'只是一个变量 – 2012-04-20 21:58:14

+1

'$ _SESSION'既不是一种方法,也不是一个函数,它是一个变量(超全球)。 – 2012-04-20 21:58:32

+0

你们俩都是对的,我把我的括号并越来越困惑 - 我要指责这是迟到的事实 – 2012-04-20 21:59:27

2

会话变量存储在服务器上。 JavaScript在cliend端执行,所以它对服务器端一无所知。它只知道你传递给它的信息。

为了一个变量传递给JavaScript,使用Ajax请求,或者简单地输出的值:

<script> 
var sesionValue = <?=json_encode($_SESSION['value']);?>; 
</script> 
+1

在这里,你严重缺少“输出转义”:它的值包含一个撇号?!根据这个值如何填充,这可能是真正的安全问题(js代码注入,...)一些逃逸函数,如** addslashes()**需要使用..或更一般(取决于值类型),** json_encode()** – Myobis 2012-04-20 22:21:43

1

你应该考虑使用JQuery,因为它使这些AJAX样的任务要容易得多。

看我的功能我今天写了一些类似于你问的东西。

这需要一些PHP输出(在呼叫的success部分返回到ajax()它需要的格式是在JSON,其是由两个PHP和JavaScript(JSON兼容:。JavaScript对象符号)

function viewClientDetails(id) { 
    var clientParams; 
    clientParams.clientID = id; 
    $.ajax({ 
     url: BASE_URL + '/clients/get-client-details.php', 
     type: 'POST', 
     data: clientParams, 
     dataType: 'JSON', 
     success: function(myClient) { 
      var name = myClient.name; 

      $('td#name').html(name); 

     }, 
     error: function(e) { 
      console.log(e.responseText); 
     } 
    }) 
} 

在我的PHP文件(称为/clients/get-client-details.php),我有这样的事情:

<?php 
... 
$myClient = array('name' => 'Mr Foobar'); 
print json_encode($myClient); 

?> 

这只是将我的PHP对象为JSON格式。

在上述JS代码,该代码插入JSON数据的一部分到一个HTML表的数据元素,它的CSS选择ID为#name,与线:$('td#name').html(name);

道歉,如果这会混淆你更多,我想我会表现出什么,你可以尝试一些时间的一个例子..

这可能会帮助你前进的道路有点...不断尝试的事情,你会到达那里:)