我正在尝试转换PHP / JQuery可排序的拖放脚本。我想将JQuery可排序功能添加到我用Classic ASP编写的网站。
以下是该脚本的缩小版本:
<script type="text/javascript" src="js/jquery-1.3.2.min.js"></script>
<script type="text/javascript" src="js/jquery-ui-1.7.1.custom.min.js"></script>
<script type="text/javascript">
// When the document is ready set up our sortable with it's inherant function(s)
$(document).ready(function() {
$("#test-list").sortable({
handle : '.handle',
update : function () {
var order = $('#test-list').sortable('serialize');
$("#info").load("process-sorttest.asp?"+order);
alert('' + order);
}
});
});
</script>
<li id="listItem_1"><img src="img/arrow.png" alt="move" width="16" height="16" class="handle" /><strong>Item 1</strong></li>
<li id="listItem_2"><img src="img/arrow.png" alt="move" width="16" height="16" class="handle" /><strong>Item 2</strong></li>
脚本的Jquery可排序方面非常完美。我的问题是尝试将更新的数据保存回数据库。
以下是我想要转换为ASP的脚本的PHP版本:
foreach ($_GET['listItem'] as $position => $item) :
$sql[] = "UPDATE `table` SET `position` = $position WHERE `id` = $item";
endforeach;
print_r ($sql);
这是我在经典asp中最接近的:
For Each Item In Request.QueryString
Response.write "Processing: " & Request.QueryString("listItem[]") & "<br />"
Next
这给了我修改菜单项的ID,但是我想转换这个脚本的原因是因为PHP脚本读取并打印了排序的新顺序和列表项的ID。 我打印的所有内容都是列表项“Processing 1,2”
的ID任何帮助将不胜感激..
答案 0 :(得分:3)
ASP中的“For Each ... Next”构造如下:
For Each <itemvar> In <collectionvar>
...
Next
循环的每次迭代都会将来自collectionvar的一个项目放入变量itemvar(两者都是实际变量/值的占位符)。目前,你的循环正在访问Request.QueryString(“listItem []”),无论你在循环的迭代是什么,它都是相同的。相反,您需要使用在For Each循环中定义的“Item”变量来在每次循环中处理不同的项目。
答案 1 :(得分:1)
不是你的问题的答案,但链接很糟糕:
您的PHP代码看起来好像有SQL injection个漏洞。您可能想要阅读以确保在ASP中不会犯同样的错误。
归结为,您不应该认为用户输入是安全的。您将变量直接从查询字符串中取出并假设它们是数字。实际上,它们可能是部分SQL语句。
答案 2 :(得分:1)
您是否尝试过Request.QueryString(Item)
而不是Request.QueryString("listItem[]")
循环For Each Item In Request.QueryString
不会为listItem[]
生成任何内容,而且确实不会为"listItem[]"
生成任何内容
答案 3 :(得分:0)
尝试类似http://www.me-u.com/php-asp/这样的事情并不完美但可能会有所帮助