【问题标题】:pass php array to jquery with getJSON使用getJSON将php数组传递给jquery
【发布时间】:2010-04-22 06:33:58
【问题描述】:

更新: 我用这个:

$.getimagesarr = function(operation) {
  return $.ajax({
      type: 'POST',
      url: 'operations.php',
      data: {'operation':operation},
      async: false
    }).responseText
}


var jsonstring = $.getimagesarr('getimg');
var data = (new Function("return " + jsonstring))() 
if (data){
   ....
}

旧: 我想将一个 php 数组传递给 jQuery:

$.getimagesarr = function() {
    $.getJSON('operations.php', {'operation':'getimglist'}, function(data){
        var arr = new Array();
        arr = data;
        return arr;
    });  
}

var data = $.getimagesarr();
if (data){
 jQuery.each(data, function(i, val) {
     ....
    });
}

返回未定义

在 php 中我有这个:

function getimglist(){
    $results = $_SESSION['files'];
    echo json_encode($results);
}

有可能吗?

【问题讨论】:

    标签: php jquery arrays object


    【解决方案1】:

    return arr; 行不会为$.getimagesarr 函数返回值。在$.getJSON() 调用完成后,它将异步执行。您应该将代码的底部区域移动到 $.getJSON() 调用的成功事件处理程序中:

    $.getimagesarr = function() {
        $.getJSON('operations.php', {'operation':'getimglist'}, function(data){
            if (data){
                jQuery.each(data, function(i, val) {
                    ....
                });
            }
        });  
    };
    

    【讨论】:

    • 我真的需要一个函数,我在更多地方使用它,我不想把所有这些代码 3..4... 次!如何在变量中返回一个值?某事像这样: var data = $.getimagesarr();
    • 为此,您需要使用同步 AJAX 调用,这会带来很多弊端。它可能会导致浏览器出现性能问题和/或导致浏览器挂起。我会强烈建议不要这条路线。基于事件的方法,虽然对于您可能必须做的任何重构来说都是痛苦的,但它是要走的路。我的意思是,“异步”实际上是首字母缩略词“AJAX”(异步 JavaScript 和 XML)的首字母。
    • 我相信这应该可行,但请记住,它会在等待数据时阻止脚本的执行。我仍然强烈建议您考虑使用异步请求进行重构以适应。
    猜你喜欢
    • 2012-01-26
    • 1970-01-01
    • 2012-01-04
    • 1970-01-01
    • 2018-07-25
    • 2015-08-21
    • 1970-01-01
    • 2012-06-01
    • 1970-01-01
    相关资源
    最近更新 更多