在html / js文件中读取json响应

时间:2011-06-01 05:56:14

标签: javascript json

以下是否可行。

我的答案如下:

HTML

<body>
<input type="text"></input>
<div id="trydiv"></div>
</body>

JS

    $.ajax({
        type: "POST",
        url: "json.php",
        data: 'val='+$('input').val(),
        success: function(response){
            $('#trydiv').load("try1.js");
        }
    });

json.php

<?php 
echo json_encode($_POST['val']);
?>

try1.js

<script type="text/javascript">
    $(function(){
        alert(response);
    });
</script>

因为在成功函数中,'m传递响应,应该“响应”不能用于try1.js.反正我们可以将响应传递给js / html文件并使用吗?

2 个答案:

答案 0 :(得分:0)

不,response将不可用,除非您将response分配给全局变量(并假设浏览器安全性允许您动态加载此类脚本)。我认为,如果你澄清更多关于你想要实现的目标和原因,那将会有所帮助。

另外,也许你只是为了格式化而做,但是文件try1.js里面不应该有脚本标签。

答案 1 :(得分:0)

今天我遇到了一个非常有趣的脚本,向我展示了如何从脚本标签中获取参数:

$.ajax({
        ....
        success: function(response){
            $('#trydiv').load("try1.js");
            var scr = document.createElement('script');
            scr.type = 'load.js?'+escape(response);
            document.getElementsByTagName('head')[0].appendChild(scr);
        }
    });

现在在你的load.js中:

// get the parameters from the script tag
var scripts = document.getElementsByTagName('script');
var data ='';
for (var i=0,l= scripts.length;i<l;i++){
   if (scripts[i].src.indexOf('load.js') != -1){
      data = scripts[i].src.slice(scripts[i].src.indexOf('?')+1);
   }
}

// now you can do alert the data
alert(data);

这可能看起来很复杂,但研究一下,你会发现我可以帮助你解决你的特定问题