django +jquery+ ajax get提交报错,post提交就可以
 模板:(index.html)
“
<html>
<body>
<p>请输入两个数字</p>
<form action="/index" method="get">
    a: <input type="text" id="a" name="a"> <br>
    b: <input type="text" id="b" name="b"> <br>
    <p>result: <span id='result'></span></p>
    <button type="button" id='sum'>提交</button>
</form>

<!---<script type="text/javascript" src="/static/jquery-3.3.1.min.js"></script>--->
<script src="http://apps.bdimg.com/libs/jquery/1.11.1/jquery.min.js"></script>
<script>
    $(document).ready(function(){
      $("#sum").click(function(){
        var a = $("#a").val();
        var b = $("#b").val();

        $.get("/index",{'a':a,'b':b}, function(ret){
            $('#result').html(ret.result)
        })
      });
    });
</script>
</body>
</html>”
**url 代码:**
urlpatterns = [
    url(r'testDb' , testDb),
    url(r'query' , Query),
    url(r'formdemo' , searchtest.search),
    url(r'^seachDemo' , searchtest.search_form),
    url(r'^index' , view.loginIndex),
]

 python 代码view.py:

def loginIndex(request):
    if(request.method == 'GET'):
        a = int(request.GET.get('a'))
        b = int(request.GET.get('b'))
        return_json = {'result': a + b}
        return HttpResponse(json.dumps(return_json), content_type='application/json')
    return  render(request,"index.html")
    报错:
    TypeError at /index

int() argument must be a string, a bytes-like object or a number, not 'NoneType'

Request Method: GET
Request URL: http://127.0.0.1:8000/index
Django Version: 2.0.3
Exception Type: TypeError
Exception Value:

int() argument must be a string, a bytes-like object or a number, not 'NoneType'

Exception Location: D:\PythonDemo\PythonDemo\view.py in loginIndex, line 12
Python Executable: D:\PythonDemo\venv\Scripts\python.exe
Python Version: 3.6.3
Python Path:

['D:\PythonDemo',
'D:\PythonDemo',
'D:\PythonDemo\venv\Scripts\python36.zip',
'X:\python\DLLs',
'X:\python\lib',
'X:\python',
'D:\PythonDemo\venv',
'D:\PythonDemo\venv\lib\site-packages',
'D:\PythonDemo\venv\lib\site-packages\setuptools-28.8.0-py3.6.egg',
'D:\PythonDemo\venv\lib\site-packages\pip-9.0.1-py3.6.egg',
'X:\PyCharm\PyCharm 2017.3.4\helpers\pycharm_matplotlib_backend']

Server time: Sun, 18 Mar 2018 07:35:40 +0000

这个报错也让我很懵逼,我把提交方式,和ajax方法改成post,就没有这个报错,程序可以正常运行

2个回答

这句你应该看得懂,告诉你了,参数需要是string或者数字,但不能是空。
int() argument must be a string, a bytes-like object or a number, not 'NoneType'
明显你的request.GET.get('a')是空值。
你个$.get方法也对的。
你的代码也是对的。
那么只有$.get下的data节点有可能出错了。
你改为:{a:a,b:b}试一试。
同时,使用Chrome或者firefox去看network里面那条产生的请求对不对。

caca95
95CACA 回复95CACA: 默认是按get提交的,写错了
一年多之前 回复
caca95
95CACA 看了你的回答,我知道我问题在哪了,在if(request.method == 'GET'):这句话后面,我需要判断下request里的值是否为空,貌似页面加载默认是按request提交的,而这个时候参数其实是空的,所以第一次应该判断一下,get提交的值,int()是无法操作一个空对象的,犯了一个最基本的错误,谢谢你了,这个c币该咋给
一年多之前 回复

用get提交,看看变量参数写对了吗

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!