2010-11-12 94 views
1

我搜索了很多,但我找不到任何东西。下面的函数发出一个数据库请求并通过$ .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变量处理数据。如果可以,我将如何解析它?对不起,如果我在解释问题时使用了错误的术语。我不是很熟悉,但我仍然可以使用。

+0

根据我的经验,你不能这样做(任何人都可以纠正我),你需要编程任何需要做不同的事情,以便AJAX的回调可以处理它。 – 2010-11-12 07:16:07

+0

什么是outputString看起来像?它是否包含价格价值? – subosito 2010-11-12 07:17:58

回答

0

您可以设置outputString AJAX回调函数内是这样的:

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

我已经问了两个问题。抱歉回复晚了。我很感激你的帮助。我警告函数中的数据['period_id'] [0]的值,我也使用outputString将它从函数中提醒出来。我所拥有的功能在内部警报之前正在运行。在Ajax内部有一个DB访问需要一两秒钟来提醒响应。所以那里有一个序列问题。非常感谢所有的帮助.Ozlem。 – user403295 2010-11-14 23:18:47

0

$(data).eachprice总会有最后的指数值。我假设你会需要所有的索引值。作为@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!"); 
0

异步JavaScript做到这一点,XML是异步

当您收到HTTP响应时,您传递给post的功能将运行,而不是立即生效。

你必须处理里面的那个回调函数。你不能从回来,因为它太