【问题标题】:handling ajax return value处理ajax返回值
【发布时间】:2011-05-08 22:05:27
【问题描述】:

我搜索了很多,但我找不到任何东西。下面的函数是发出一个数据库请求并通过 $.post 获取数据。我在内部函数中获取数据,但我需要在外部将一些数据与 outputString 变量相等。如果您阅读代码,您会看到我需要什么。

    function calculatePrice(checkInDate, checkOutDate, nights){

        var rentDetailsArr       = <?php echo json_encode($periods); ?>;
        var minDays = ["<?php echo implode('","',$minDaysArr)?>"];
        var outputString ="";   

            var stDate  = "2010-02-10";
            var endDate = "2010-09-29";

            var xxx = $.post('testData.php', 
                { opType:"getSelectedPeriodDetails", startDate: stDate, endDate: endDate  }, 
                    function getData(data) {

                        $(data).each (function (index){
                            //I am able to get the data in here.but i need to equal it to outputString variable.
                            var price = data['period_id'][0];
                            //alert(price);
                            alert(price);                               
                        });     
                    },  "json");

        //when I equal $.post return to xxx variable, the return is as [object XMLHttpRequest ]
        alert(xxx);

        return outputString;    
    }

现在我如何处理外部数据?..可以通过 xxx 变量处理数据。如果可以,我将如何解析它?抱歉,如果我在解释问题时使用了错误的术语。我不是很熟悉,但我仍然可以使用。

【问题讨论】:

  • 根据我的经验,你不能那样做(任何人都可以纠正我),你需要对需要做的任何事情进行编程,以便 AJAX 的回调可以处理它。
  • outputString 是什么样的?是否包含价格价值?

标签: javascript ajax return


【解决方案1】:

您可以像这样在 ajax 回调函数中设置 outputString:

$(data).each (function (index){
    // set price to outputString
    outputString = data['period_id'][0];
});   

【讨论】:

  • 我问这个问题已经两天了。抱歉回复晚了。感谢您的帮助。我在函数中提醒 data['period_id'][0] 的值,我还使用 outputString 提醒它离开函数。我所拥有的是功能警报在内部警报之前运行。 ajax 内部有一次数据库访问需要一两秒钟来提醒响应。所以那里有一个序列问题。非常感谢所有的帮助。Ozlem。
【解决方案2】:

$(data).each 中,price 将始终具有最后一个索引值。我假设您需要所有索引值。正如@alififty 回答的那样,您可以将其保存在 outputString 中,然后将 outputString 设为一个数组,该数组将保留所有索引值:

var outputString = [];

$(data).each (function (index){
    // set price to outputString
    outputString.push(data['period_id'][0]);
}); 

此外,如果您想对结果执行以下操作:

var price = calculatePrice("xxxx", "xxxx", "xxxx").Tax();

那么你可以通过JavaScript Function Chaining来做这个

function hello() {
  if(!(this instanceof hello))
        return new hello();
  var _hello = "Hello ";
  this.world = function(message) {
    alert(_hello + message);
  }

}
hello().world("World!");

【讨论】:

    【解决方案3】:

    异步 ​​JavaScript 和 XML 是 异步

    您传递给post 的函数在收到HTTP 响应时运行,而不是立即运行。

    您必须处理内部该回调函数的数据。您无法从中返回,因为它为时已晚

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-11-25
      • 1970-01-01
      • 2013-09-30
      • 1970-01-01
      • 1970-01-01
      • 2014-08-15
      • 1970-01-01
      • 2018-04-02
      相关资源
      最近更新 更多