jQuery AJAX传输数据到Pyramid后端的问题
我正在尝试通过AJAX将一个ID为“AltTitle”的元素的值发送回Pyramid后端。根据下面的代码,Python接收到的请求参数是AlternativeTitle,但没有值。我卡住了。我想学习如何构建一个AJAX数据的字典,这样我就可以把所有的值传回Python,但到目前为止,我还没能做到。任何帮助都很感激……
$(document).ready(function(){
$("button").click(function(){
$.ajax({
type:"POST",
url:"/edit/29241",
data:{
"AlternativeTitle": $("#AltTitle").html()
},
success:function(result){
alert( result );
}
});
});
});
<p id="AltTitle" contenteditable=True>Existing Title</p>
<button>Save</button>
3 个回答
0
你有没有先试着获取这个值呢?可以试试这个:
var alttitle = $("#AltTitle").html();
$.ajax({
type:"POST",
url:"/edit/29241",
data:{ AlternativeTitle : alttitle },
success:function(result){
alert( result );
}
});
0
首先,我会在浏览器的JavaScript控制台里查一下$("#AltTitle").html()
的值。你可以通过按下Chrome里的Ctrl+I来打开控制台。然后,如果结果是你预期的那样,我会去检查一下浏览器的开发者工具,看看发出的请求中,AlternativeTitle的值是不是你想要的。在Chrome中,你可以在开发者工具的网络(Network)标签里看到你的HTTP请求。接着,我会看看服务器端的代码。
不过服务器端出问题的可能性不大,因为你说request.params['AlternativeTitle']
是存在的,但它是空的。
1
好的,看起来是这些{}引起了问题。这可能是因为jQuery代码放在了Jinja2模板里面,但即使加上了{% raw %}也没有改变结果。通过把脚本改成这样:
data:"AlternativeTitle:" + alttitle + '&' "othervalue" + otherval,
我在服务器上得到了序列化的版本。现在我还没把它写回数据库,但我觉得这样应该可以了。谢谢Fosco和Antoine。