jQuery AJAX传输数据到Pyramid后端的问题

1 投票
3 回答
1613 浏览
提问于 2025-04-16 19:02

我正在尝试通过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。

撰写回答