将js变量传递给php字符串

时间:2012-05-25 21:54:30

标签: php javascript

我需要一些帮助,我试图将js变量页面转换为使用file_get_contents在php中解析的url。我不知道从哪里开始这样做。

<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');

?>

任何建议都表示赞赏,就像我在这个黑暗中说的那样。

3 个答案:

答案 0 :(得分:2)

以下是使用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");
 ?>

答案 1 :(得分:1)

扩展贾什万特所说的......

PHP是一种服务器端语言,可以在幕后工作。 Javascript是客户端,它在本地客户端的计算机上运行并执行代码(即通过浏览器)。

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

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

希望它运作良好。

答案 2 :(得分:1)

继续你如何使用jquerys post()然后返回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>