我该怎么做呢?

时间:2012-05-18 19:36:09

标签: ajax xmlhttprequest json

首先,我将数据编码在json_encode函数中。

例如:

{"test":"test value"}

我想要做的是将测试变成一个javascript变量,它可以保存“测试值”的数据。

3 个答案:

答案 0 :(得分:0)

$.getJSON('ajax/test.json', function(data) {
  var items = [];

  $.each(data, function(key, val) {
    items.push('<li id="' + key + '">' + val + '</li>');
  });

  $('<ul/>', {
    'class': 'my-new-list',
    html: items.join('')
  }).appendTo('body');
});

直接来自jquery docs ...

答案 1 :(得分:0)

对象是关联数组。它们存储键/值对。所以你要做的就是:

var test = function(){}
test["hello"] = "world";

这会将hello设置为变量,将world设置为其值。 你可以通过

进行测试
alert(test.hello);

用json键和值

替换helloworld

希望通过此示例提供更多帮助: 我正在使用Jquery AJAX转到index.php资源并返回一个json对象。

的index.php

<?php
$variables = array('hello' => 'world');
echo json_encode($variables);
?>

example.html的

var test = function(){}
$.ajax({
   url: index.php,
   success: function(json) {
    for(var key in json ){
     var testVarName = key;
     var testVarValue = json[key];
     test[testVarName ] = testVarValue;
    }
}
});

所以现在test对象的变量为hello,其值为world

答案 2 :(得分:0)

index.php(在这里使用json_encode):

<?php
  $foo = array('test' => 'test value');
  echo json_encode($foo);
?>

example.html的

<script type="text/javascript">

  $.get('index.php', function(response) {
    alert(response['test']);
    // this will alert "test value"
  }, 'json');

</script>

EDIT1 :example.html (不使用jQuery解决方案):

<script type="text/javascript">

window.onload = function() {
    var request;
    request = getHTTPObject();
    request.onreadystatechange = sendData;
    request.open("GET", "index.php", true);
    request.send(null);
}

function sendData() {
    if(request.readyState == 4){
    var JSONtext = request.responseText;
    var JSONobject = JSON.parse(JSONtext);

    // notice how variables are used
    var output = JSONobject.test;

    alert(output); // displays "test value"
}


function getHTTPObject(){
    var xmlhttp = false;
    if(window.XMLHttpRequest){
        xmlhttp = new XMLHttpRequest();
    } else if (window.ActiveXObject) {
        try{
            xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
        }
        catch(e){
            try{
                xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
            }
            catch(e) {
                xmlhttp = false;
            }
        }
    }
    return xmlhttp;
}
</script>