繁体   English   中英

将url输出分配给javascript中的变量

[英]assign a url output to a variable in javascript

下面的代码运行良好。 我是ajax的新手。 需要将第6行的url调用的输出(如“ http://test.com/test.php ”)分配给变量json3。url调用的输出看起来像{“ inp1:val1”:{“ data “:[[1378267200000,0.0743],[1378270800000,0.1787]]}}

目前,我有这样的硬编码,例如var json3 = {“ inp1:val1”:{“ data”:[[1378267200000,0.0743],[1378270800000,0.1787]]}}

 <html>
    <head>
    <title>JSON to CSV</title>
    <script src="json.js" type="text/javascript"></script>
    <script type="text/javascript">

    var json3 = { "inp1:val1": { "data": [ [ 1378267200000, 0.0743 ], [ 1378270800000, 0.1787 ] ] }}
    DownloadJSON2CSV(json3["inp1:val1"].data);

    function DownloadJSON2CSV(objArray)
    {
        var array = typeof objArray != 'object' ? JSON.parse(objArray) : objArray;

        var str = '';

        for (var i = 0; i < array.length; i++) {
            var line = '';

            for (var index in array[i]) {
                line += array[i][index] + ',';
            }

            line.slice(0,line.Length-1); 

            str += line + '\r\n';
        }
        window.open( "data:text/csv;charset=utf-8," + escape(str))
    }

    </script>

   </head>
   <body>
    <h1>This page downloads csv....</h1>
</body>
</html>

谢谢你的帮助

你可以试试看

<script type="text/javascript">

var xmlhttp;
var txt,x,i,json3;
if (window.XMLHttpRequest)
  {
  // code for IE7+, Firefox, Chrome, Opera, Safari
  xmlhttp=new XMLHttpRequest();
  }
else
  {
  // code for IE6, IE5
  xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
  }

xmlhttp.onreadystatechange=function()
  {
  if (xmlhttp.readyState==4 && xmlhttp.status==200)
    {
    json3 = eval(xmlhttp.responseText);
    DownloadJSON2CSV(json3["inp1:val1"].data);
  }
xmlhttp.open("GET","http://test.com/test.php",true);
xmlhttp.send();
}

function DownloadJSON2CSV(objArray)
{
    var array = typeof objArray != 'object' ? JSON.parse(objArray) : objArray;

    var str = '';

    for (var i = 0; i < array.length; i++) {
        var line = '';

        for (var index in array[i]) {
            line += array[i][index] + ',';
        }

        line.slice(0,line.Length-1); 

        str += line + '\r\n';
    }
    window.open( "data:text/csv;charset=utf-8," + escape(str))
}

</script>

让我知道。

我将其更多地视为一种设计决策,而不是将其实现的方法。

  1. 如果应该在加载数据时在页面上立即存在数据,并且假设您具有动态后端,则可以查询(某些格式化并返回页面HTML的后端语言),那将是明智的。以便在加载页面时立即填充该变量。

  2. 如果您确实需要查询该数据,并且应该在页面加载时对其进行处理,请在页面初始化时通过在HTML的开头插入ajax调用(在加载所有库并当需要使用脚本标签时,请在进行调用之前初始化将在全局上下文中可用的变量( json3 )。

  3. 如果给变量赋值应该发生某些事情,请采用异步回调,该回调将在ajax调用完成时被调用:

      function doAjaxCall(callback) { //your ajax call here //and within your ajax success/failure handler: callback(value); } //your callback function function myCallback(value) { //do something with value here, such as alert(value); } //and invoke it with doAjaxCall(myCallback); 

我的建议的主要要点是要包含一个事实,除非您能够应付Ajax调用的异步特性(这正是A在Ajax中的含义),否则您将不知道何时为变量分配值。

如果您尚未使用jQuery (或任何其他库),建议使用jQuery (或任何其他库)也很重要。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM