我正在尝试通过ajax json学习将数据发送到经典asp的方法 这个asp页面已被json成功调用,但问题是数据无法到达后端,因此数据库无法根据修改后的类型进行修改
正面
<script>
$(document).ready(function(){
$( "#sortable" ).sortable({
update: function( event, ui ) {
alert(ui.item.index());
alert(ui.item.attr("id"));
var data={
'sort':ui.item.index()
}
$.ajax({
url: 'work.asp?action=update,
type: "POST",
contentType: "application/json; charset=utf-8",
data: JSON.stringify(data),
dataType: "json",
error: function (xhr, status, error) {
var err = eval("(" + xhr.responseText + ")");
alert(err.Message);
},
success: function (){
alert("success");
}
});
}
});
});
</script>
背面我使用经典的ASP 但我无法获取数据中的数据 我该怎么做?
<%
Set conn = Server.CreateObject("ADODB.Connection")
DBPath = Server.MapPath("wawaaddatatable.mdb")
conn.Open "provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & DBPath
if request.QueryString("action")="update" then
Response.ContentType = "application/json"
Set rs = Server.CreateObject("ADODB.Recordset")
rs.open "Select * From images ",conn,1,3
rs.addnew
rs("sort")=request.form("sort")
rs("upload_date")=date()
rs("filename")="abc.jpg"
rs.update
rs.close
end if
%>
答案 0 :(得分:5)
我认为问题是请求是以JSON格式发送的,所以当你尝试获取“sort”的值时,它在Request.Form集合中不存在。虽然您可以解析JSON并获得我建议的值,但更改请将其作为普通表单发送更容易。
我在下面修改了你的脚本。请参阅我在其中添加的评论。通过这些更改,Request.Form(“sort”)将返回一个逗号分隔的排序顺序值字符串,因此您现有的后端应该仍然有用。
<script>
$(document).ready(function(){
$( "#sortable" ).sortable({
update: function( event, ui ) {
alert(ui.item.index());
alert(ui.item.attr("id"));
//following not needed now
//var data={
// 'sort':ui.item.index()
// }
$.ajax({
url: "work.asp?action=update", // update
type: "POST",
//Removed contentType so default will be used which is normal form post data
//contentType: "application/json; charset=utf-8",
//Changed data to use this method which sends order as comma separated string
data: { sort: $('#sortable').sortable('serialize') },
dataType: "json",
error: function (xhr, status, error) {
var err = eval("(" + xhr.responseText + ")");
alert(err.Message);
},
success: function (){
alert("success");
}
});
}
});
});
</script>