【问题标题】:post data to view using ajax使用ajax发布数据以查看
【发布时间】:2016-06-11 11:41:15
【问题描述】:

我有一个模板“mytemplae.pt”:

function do_option_ajax() {

               var address = document.getElementById('url').value;
               $.ajax({
                   type: "POST",
                   url: "url_option",
                   data: JSON.stringify({url: $(address)}),
                   contentType: 'application/json; charset=utf-8',
                   dataType: 'json',
                   error: function () {
                       alert('error')
                   },
                   success: function (data) {
                       alert('Success');
                   }
               })
           }


<form method="post" action="index">
  <input type="url " name="url" id='url' size="100">
    <button id="2" formaction="url_option" onclick="do_option_ajax()">Confirm</button>
</form>

在 .py 文件中:

config.add_route('option', '/url_option')
@view_config(route_name='option', renderer='json', request_method='POST')
def option(request):
    url = request.params['url']
    # do something and create json_result
    return json_result

有了这些,我想将 json_result 发送回视图并对其进行处理,但它返回一个空视图,并打印了 jsob obect:

【问题讨论】:

  • 您返回 JSON,这就是您的输出显示的内容。这到底是什么问题?
  • @DanielRoseman 我想将 json 数据传递给视图,在 ajax 帖子的成功回调中。但它不起作用
  • 这仍然无法解释任何事情。什么不起作用?这里的“观点”是什么意思?我可以在该屏幕截图中清楚地看到 JSON。您还期望发生什么?
  • @DanielRoseman 我想再次渲染“mytemplae”,同时将 json 作为成功回调的数据对象发送给它,而不是像上面的屏幕截图那样
  • 好的。你在哪里编写了代码来做到这一点?

标签: python ajax pyramid


【解决方案1】:

您需要防止在 Javascript 中触发默认表单操作。此时您的 onclick 处理程序被调用,一毫秒后标准 HTML 表单提交开始。标准表单提交从服务器接收数据并将其显示为新页面。

为了防止这种情况,你需要做类似的事情

<form id="myform">
  <input type="url " name="url" id='url' size="100">
    <button id="2">Confirm</button>
</form>


$("#myform").on('submit', function (e) {

    var address = document.getElementById('url').value;
    $.ajax({
        type: "POST",
        url: "url_option",
        data: JSON.stringify({url: $(address)}),
        ...
    });
    e.preventDefault();
});

请注意,我正在侦听表单提交事件,而不是按钮单击,并且我从表单中删除了 actionmethod 属性,因为它们只会在这种情况下造成伤害。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-12-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多