我有一些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
任何帮助解决这个难题是非常感激的。谢谢!
- 你不能这样使用
document.write
。它只能在页面第一次加载时使用,不能异步加载。如果这是为了调试,请使用console.log()
并在JavaScript控制台中查看结果。您也可以使用它来代替alert()
进行调试。 - 你做一个AJAX调用,但不做任何与结果是在
response
参数。 - 它会到达你的
alert()
吗? -
.addClass( 'greenbg', 350, 'linear' )
应该做什么?听起来你想在这里使用.animate()
。如果它是一种颜色变化效果,请注意您需要使用实际的颜色值进行动画,动画引擎可以对其进行插值。在一段时间内线性地添加一个类名意味着什么?每次添加一个字母?: -) -
.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上崩溃了。
我希望这对你有帮助