JavaScript / JQuery:对象属性的问题

时间:2011-06-16 13:53:27

标签: javascript jquery ajax

我正在使用JQuery调用$ .ajax函数。调用的php返回一个结构为“varname = varvalue& varname2 = varvalue2”的字符串。我打破了这一切并创建了一个对象,它使用varnames作为特性,varvalues作为这些属性的值。这是我的代码:

$.ajax({
           type:"POST",
           url:"/actions/savebbuilderdata.php",
           data:({step: stepNum, submitObj: saveObj}),
           complete:function(jqXHR, textStatus){
               var returnObj = new Object();
               var returnArr = jqXHR.responseText.split("&");
               for(i=0;i<returnArr.length;i++){
                   var tempArr = returnArr[i].split("=");
                   returnObj[tempArr[0]] = tempArr[1];
               }
               //For Testing that the values are infact being assigned
               for(prop in returnObj){
                   alert(prop + ": " + returnObj[prop]);
               }
                alert(returnObj.returnText);
           }
           });

注意第二个for循环。我只是这样做以获取对象内每个属性的警报。这可以正常工作,并显示具有正确值的每个属性名称。返回的其中一个属性始终是'returnText'。但是,当我调用最终警报尝试获取returnText时,我得到'undefined'。任何想法为什么会这样?

2 个答案:

答案 0 :(得分:0)

为什么不将数据作为json编码数组返回呢?

更容易使用

答案 1 :(得分:0)

我看不出代码有多大错,但也许这些可以帮助您识别问题。我会使用success代替complete来确保问题不在于传输信息。

我还将deparameterize代码提取到一个单独的函数中,因为它更容易测试,看起来像我会再做一些。

String.prototype.deparameterize = function() {
    var hsh = new Object;

    var pairs = this.split("&");

    for(i=0;i<pairs.length;i++){
       var pair = pairs[i].split("="); 
       hsh[pair[0]] = pair[1];
    }

    return hsh;
}

$.ajax({
    type:"POST",
    url:"/actions/savebbuilderdata.php",
    data:({step: stepNum, submitObj: saveObj}),
    success:function(data, textStatus,jqXHR){
        var obj = data.deparameterize();
        alert(obj.returnText);
    }
});

注意:并不总是最好的做法来扩展String,但也许在这种情况下它可以工作。