2012-05-25 54 views
3

我需要一点帮助,我试图将一个js变量分页成一个在php中使用file_get_contents解析的url。我不知道从哪里开始做到这一点。将js变量传递给php字符串

<script type="text/javascript"> 
var js_variable = appl+goog+fb+mfst+nflx; 
</script> 

<?php 
$ticker = js_varable_here; 
$file = file_get_contents('http://finance.yahoo.com/d/quotes.csv?s=$ticker&f=soac1p2ghjkj1re'); 

?> 

任何意见是赞赏,就像我说这是在黑暗中即时通讯。

+6

php在服务器上运行,js驻留在客户端。首先它得到服务器,而不是客户端。你不能那样传球。虽然 – Jashwant

+1

可以使用ajax来获得你想要的内容 – aurel

+2

这个确切的问题不断出现...... – Imp

回答

1

这是一个使用jQuery的例子。

的Javascript:

<script type="text/javascript"> 
    var js_variable = appl+goog+fb+mfst+nflx; 
    $.post("/somephp.php", {ticker: js_variable}, function(data) { 
    // returned from php 
    }); 
</script> 

PHP:

<?php 
    $ticker = $_POST['ticker']; 
    $file = file_get_contents("http://finance.yahoo.com/d/quotes.csv?s=$ticker&f=soac1p2ghjkj1re"); 
?> 
+0

感谢您的评论。修复了帖子。 – user1418338

+0

所以PHP部分会进入somephp.php文件?只是所以我理解正确 – Suzed

+0

@Suzed是的。在这个例子中,这就是PHP会去的地方。如果您将html和php混合,您也可以将javascript中的url更改为“./”。 (这意味着你应该在PHP部分添加一些逻辑,以便它检测到一个post请求。) – user1418338

1

扩展在什么Jashwant说...

PHP是一种服务器片面的语言,它确实在幕后工作。 Javascript是客户端,它在本地客户端的机器上运行和执行代码(即通过浏览器)。

但是,您可以使用AJAX(异步JavaScript和XML),这样本地客户端就可以向服务器发送HTTP请求,而无需重新加载当前页面。例如,您可以使用AJAX将变量的内容发送到服务器。

为了方便使用,您应该查看jQuery有关ajax调用的方法。参见:http://api.jquery.com/jQuery.ajax/

希望它运作良好。

1

继承人你如何能做到这与jquerys后(),然后返回JSON,您可以按照您的预期输出中的构建结果PHP部分或你可以使用jQuery来循环每个()通过结果。

<?php 
if($_SERVER['REQUEST_METHOD']=='POST' 
    && isset($_SERVER['HTTP_X_REQUESTED_WITH']) 
    && strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) === 'xmlhttprequest'){ 

    if(!empty($_POST['s'])){ 

     $ticker = $_POST['s']; 
     $file = file_get_contents('http://finance.yahoo.com/d/quotes.csv?s='.$ticker.'&f=soac1p2ghjkj1re'); 

     header('Content-Type: application/json'); 
     echo json_encode(array('result'=>$file)); 
    }else{ 
     echo 'Request not allowed!'; 
    } 
    die; 
} 
?> 
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head> 
<title></title> 
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js" charset="utf-8"></script> 
<script> 
var js_variable = "appl+goog+fb+mfst+nflx"; 

$.post('this_script.php',{s: js_variable}, function(data) { 
    $('#divResult').replaceWith('<div id="divResult">'+ data.result +'<div>'); 
}); 
</script> 
</head> 
<body> 

<div id="divResult"><div> 
</body> 
</html> 
+0

我测试了你的代码只是为了看看是否有很大的差异,它似乎没有工作,数据回来,因为undefined – Suzed

+0

它的工作对我来说,你有没有在jQuery文章中更改** this_script.php **? –

+0

也应该看看$ file是否包含任何内容。也许FGC没有启用。 –