odoo 前後臺 + ajax 調用

話不多說直接上代碼(直接用改改自己需要的邏輯即可)最後別忘記在__manifest__.py加權限

xml部分:

<?xml version="1.0" encoding="UTF-8"?>
<odoo>
<template id="register_page" >
    <head>
        <meta http-equiv="Access-Control-Allow-Origin" content="*" />
        <script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/vue/2.1.8/vue.min.js"></script>
        <script src="https://cdn.staticfile.org/vue/2.4.2/vue.min.js"></script>
        <script src="https://cdn.bootcss.com/jquery/3.0.0/jquery.min.js"></script>
        <script type="text/javascript" src="/academy/static/src/js/test.js"></script>
        <script src="http://code.jquery.com/jquery-latest.js"></script>
        <style>
         .int{ height: 30px; text-align: left; width: 600px; }
         label{ width: 200px; margin-left: 20px; }
         .high{ color: red; }
         .msg{ font-size: 13px; }
         .onError{ color: red; }
         .onSuccess{ color: green; }
        </style>
    </head>
    <center><h3>用戶信息頁面</h3></center>
    <form name="myform">
            <div class="int">
                <label for="name">姓名:</label>
                <input type="text" id="name" name="name" class="required" />
            </div>
            <div class="int">
                <label for="mobile">電話:</label>
                <input type="number" id="mobile" name="mobile" class="required" />
            </div>
            <div class="int">
                <label for="street">住址:</label>
                <input type="text" id="street" name="street" />
            </div>
            <div class="int">
                <input type="button" value="1測試1" οnclick="sadly()"  style="margin-left: 70px;" ></input>
            </div>
    </form>

    <script src="http://www.oschina.net/js/2012/jquery-1.7.1.min.js" type="text/javascript"></script>
    <script type="text/javascript"><![CDATA[

        function jsonpCallback(res){//回調 jsonp 固定格式我也不知道爲啥就這麼寫好用
            //自己進行邏輯處理
            console.log(res);
            alert(res.msg)
            }

        function sadly(){
            var name = myform.name.value;
            var mobile = myform.mobile.value;
            var street = myform.street.value;
            //console.log(1);
            $.ajax({
                type:"get",
                url:"http://localhost:8069/inserttest",
                dataType:"script",//是個坑不是jsonp很奇怪
                data:{
                    name:name,
                    phone:phone,
                    address:address,
                },
                jsonp:"callback",
                jsonpCallback:"success_jsonpCallback",

                success: function(data){
                //alert("成功")
                //console.log(data);
                },
                error: function(data){
                alert("失敗")
                console.log(data)
                
                }
            });
        }
        ]]>
    </script>
</template>
</odoo>

controllers部分

# -*- coding: utf-8 -*-
from odoo import http
from odoo.http import request
import time
import json
from odoo import api
from odoo.tools import misc

class Academy(http.Controller):
# 創建接口測試
    @http.route('/inserttest', auth='public',methods=['POST','GET'])
    def inserttest(self,jsonp ='jsonpCallback',**args):#注意jsonp格式
        name= args.get('name')#接受前端的參數
        phone = args.get('phone')
        address =args.get('address')
        print(name)
        print(phone)
        print(address)
        Teachers = http.request.env['academy.teachers']  # [數據庫]
        if name:
            product_count = Teachers.sudo().search_count([('name', '=', name)])#查詢有沒有此人
            # print(product_count)
            if (product_count)>=1:
                res = {'msg': '用戶已存在!', 'msg_code': 2001}
            else:
                Teachers.sudo().create({'name': name,'phone':phone,'address':address} )
                res = {'msg': '註冊成功!', 'msg_code': 0}
        else:
            res = {'msg': '必填字段未填,請檢查接口文檔!', 'msg_code': 1001}
        return_value = (jsonp +"("+ json.dumps(res,ensure_ascii=False)+")")#json固定格式
        return return_value

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章