数组AJAX表现得很狡猾

时间:2013-04-29 00:45:55

标签: jquery ajax arrays jquery-ui

我有一些使用JQUERY的AJAX代码,并尝试使用javascript来定义通过POST发送到update_DBO.php的数组

我在这里有脚本......

 <script>
  $(function() {
    $( "#sortable1" ).sortable({
            update: function(event, ui) {

        var fruitOrder = $(this).sortable('toArray').toString();
        var fruitnumbers = fruitOrder.replace(/[,]/g, ""); 
        var fruitarray = fruitnumbers.split("");

    jQuery.ajax({
     type: "POST",
     url: "update_DBO.php",
     data:  { fruitarray : fruitarray },
     cache: false,
     success: function(response)
        {   
            alert(fruitarray);  
            $('#sortable1').addClass('greenbg', 350, 'linear').delay(50);
            $('#sortable1').removeClass('greenbg', 1200, 'linear').delay(50);
            document.write('fruit: ');
            document.write(fruitarray);
        }
    });
   }
 });
});
 </script> 

因此。

问题在于它似乎根本没有计算任何果实水果或它没有通过它或document.write它。它似乎只是空了

非常感谢任何解决这个难题的帮助。谢谢!

2 个答案:

答案 0 :(得分:1)

  1. 你不能那样使用document.write。它只能在首次加载页面时使用,而不能异步加载。如果这是用于调试,请使用console.log()并在JavaScript控制台中查看结果。您也可以使用它来代替alert()进行调试。
  2. 您进行了AJAX调用但未对response参数中的结果执行任何操作。
  3. 是否可以访问alert()
  4. .addClass( 'greenbg', 350, 'linear' )应该做什么?听起来你的意思是在这里使用.animate()。如果它是一种变色效果,请注意您需要使用实际颜色值设置动画,这是动画引擎可以插入的内容。在一段时间内线性添加一个类名甚至意味着什么?一次添加一个字母? : - )
  5. .delay()来电不会做任何事情。它们只影响动画队列。如果您使用.animate(),则可以使用.delay(),但我会将所有相关的调用放在一个链中。
  6. 您知道如何使用JavaScript调试器吗?如果没有,是时候开始了。我最喜欢的是Chrome;这是一个introduction to the Chrome developer tools

答案 1 :(得分:0)

好的,从哪里开始。我们缺乏一点背景。所以我使用你的代码结构来帮助我解决这个问题。

首先,请在编写代码时使用propper tabbing / spacing。它让我们其他人的生活变得更加轻松。

就是这样。

让我们来解决你的问题。

1)使用somekind的javascript调试器。 Firefox的firebug,chrome的Chrome开发工具,甚至IE都有。 (最好使用萤火虫)。

2)弄清楚是否在fruitOrder变量中填充了任何内容。它可能不会。

3)你为什么要做正则表达式替换。我不知道你在那里参加什么。看来你拿着所有逗号并用空字符串替换它们。然后,你试图拆分一个空字符串。我会a)摆脱替换,b)将你的字符串拆分为逗号。

4)ajax调用你正在使用旧模式(至少我知道它)。您可能需要考虑使用deffered模式。这似乎是新的热点。

像这样的东西

var request = $.ajax({
    url : urlHere,
    data : {data: data},
    type : 'post'
});

request.done(function(response){
    // do something with the response
});

request.fail(function(response){
    // something horrible happened.  You got a server error response.
});

5)我不认为你正在使用document.write。您可能希望使用其他类似警报的内容来查看是否发生了某些事情。您可以使用警报或console.log()。不要保留console.log代码。如果没有足够的检查或调整,它会在IE上中断。

我希望有帮助

相关问题