数组AJAX行为可疑



我有一些AJAX代码使用了一点JQUERY并尝试使用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> 

问题是,它似乎既不计算任何水果水果数组或它不传递它或文档。写出来。只会出现null

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

  1. 你不能这样使用document.write。它只能在页面第一次加载时使用,不能异步加载。如果这是为了调试,请使用console.log()并在JavaScript控制台中查看结果。您也可以使用它来代替alert()进行调试。
  2. 你做一个AJAX调用,但不做任何与结果是在response参数。
  3. 它会到达你的alert()吗?
  4. .addClass( 'greenbg', 350, 'linear' )应该做什么?听起来你想在这里使用.animate()。如果它是一种颜色变化效果,请注意您需要使用实际的颜色值进行动画,动画引擎可以对其进行插值。在一段时间内线性地添加一个类名意味着什么?每次添加一个字母?: -)
  5. .delay()调用不会做任何事情。它们只影响动画队列。如果你使用.animate(),你可以使用.delay(),但我会把所有相关的调用在一个单一的链。你知道如何使用JavaScript调试器吗?如果没有,是时候开始了。我最喜欢的是Chrome;这是一个Chrome开发工具的介绍。

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

首先,在编写代码时请使用适当的制表符/空格。它使我们其他人的生活更容易。

就这些了。

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

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

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.
});

我认为你没有使用文件。写正确。您可能需要使用其他功能,例如警报,以查看是否发生了某些事情。您可以使用警报或console.log()。但是不要留下console.log代码。它在没有充分检查或调整的情况下在IE上崩溃了。

我希望这对你有帮助

最新更新