Skip to main content
 首页 » 编程设计

python之发布数据以使用ajax查看

2025年05月04日27think

我有一个模板“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 发送回 View 并对其进行处理,但它返回一个打印有 jsob obect 的空 View :

请您参考如下方法:

您需要防止在 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(); 
}); 

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