1

我有一些使用一点 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> 

所以。

问题是它似乎根本没有为fruit fruitarrary 计算任何东西,或者它没有通过它或document.write 它。它似乎只是空的

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

4

2 回答 2

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;这里介绍一下 Chrome 开发者工具
于 2013-04-29T00:50:58.780 回答
0

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

首先,请在编写代码时使用适当的制表符/间距。它使我们其他人的生活变得如此轻松。

这就是全部。

让我们开始解决您的问题。

1)使用某种javascript调试器。firefox 的 firebug,chrome 的 chrome 开发者工具,甚至 IE 都有。(不过最好使用萤火虫)。

2) 确定fruitOrder 变量中是否填充了任何内容。可能不会。

3)你为什么要进行正则表达式替换。我不知道你在那里做什么。看来你把所有的逗号都用空字符串替换了。然后你试图分割一个空字符串。我会a)摆脱替换,b)用逗号代替你的字符串。

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

像这样的东西

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 上中断。

我希望这会有所帮助

于 2013-04-29T00:58:31.580 回答