Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jquery 试图将数据发布到同一页_Jquery_Html_Django_Python 2.7 - Fatal编程技术网

Jquery 试图将数据发布到同一页

Jquery 试图将数据发布到同一页,jquery,html,django,python-2.7,Jquery,Html,Django,Python 2.7,我在创建网站的同时学习Python(&Django)。我已经学了很多,但在理解可用的工具和应该使用的工具时遇到了问题 我试图解决的问题: 我有一个链接列表。单击链接时,我需要查询一些数据,然后在同一页面上显示这些数据,而无需刷新或重新加载页面 #urls.py url(r'^post/query:(?P<minion_id>[^/]+)/$', views.get_miniondetail, name='get_miniondetail') #views.py --note ign

我在创建网站的同时学习Python(&Django)。我已经学了很多,但在理解可用的工具和应该使用的工具时遇到了问题

我试图解决的问题:
我有一个链接列表。单击链接时,我需要查询一些数据,然后在同一页面上显示这些数据,而无需刷新或重新加载页面

#urls.py
url(r'^post/query:(?P<minion_id>[^/]+)/$', views.get_miniondetail, name='get_miniondetail')

#views.py --note ignore file system it is a test output
def get_miniondetail(request, minion_id):
    print 'in get_miniondetail: ' + minion_id + '\r'

    detail = minion_id
    context = {'minion_detail': detail}

    html_string = '<html>' + detail + '</html>'

    f = open('test.html', 'w+')
    f.write(html_string)
    f.close()

    return HttpResponse(html_string, mimetype='text/plain')

<!-- html  -->
<a href="post/query:{{ minion.name }}">{{ minion.name }}</a>
#url.py
url(r'^post/query:(?P[^/]+)/$,views.get\u miniondetail,name='get\u miniondetail')
#views.py--注意忽略文件系统这是一个测试输出
def get_miniondetail(请求,minion_id):
在get\u miniondetail:'+minion\u id+'\r'中打印'
详细信息=仆从id
上下文={'minion_detail':detail}
html_字符串=“”+详细信息+“”
f=open('test.html','w+'))
f、 写入(html_字符串)
f、 关闭()
返回HttpResponse(html_字符串,mimetype='text/plain')

我应该调用javascript函数而不是url映射到
get\u miniondetail
的链接吗?我还没能把头脑集中在表格上。所以我想知道jQuery是否能满足我的需要……如果是这样,如何实现?

要在不刷新或重新加载页面的情况下显示数据,您肯定需要某种javascript框架,如jQuery或主干。您可以使用django获取JSON提要,然后在浏览器端使用jQuery刷新页面的数据部分

要查看的一些链接是
您在这里做了一些非常奇怪的事情。最奇怪的是,出于某种原因,您正在将HTML输出写入文件系统:不仅完全没有理由这样做,而且在实际系统中,您将立即遇到问题,因为许多不同的进程将试图写入同一个位置

但是还有其他奇怪的事情:硬编码HTML字符串而不是使用模板;奇数URL格式;正在输出模板代码而不是呈现它


你真的应该做这个教程。所有你遇到问题的事情都在那里处理

您的代码中缺少了很多东西,或者没有按照django的方式完成。但是,由于您正在努力使其工作,我建议您:

注意:代码尚未测试。但代码中需要更正的内容很少:

  • 避免在URL中使用冒号。正斜杠会更干净

  • 您在这里设置的上下文几乎是无用的,因为您没有在任何地方使用它来呈现模板

  • 如果您想在不刷新页面的情况下加载某些内容。你必须打电话。jquery函数可能很方便

    #url.py
    url(r'^post/query/(?P[^/]+)/$),views.get\u miniondetail,name='get\u miniondetail')

    #views.py--注意忽略文件系统这是一个测试输出
    def get_miniondetail(请求,minion_id):
    详细信息=仆从id
    上下文={'minion_detail':detail}
    html_字符串=“”+详细信息+“”
    f=open('test.html','w+'))
    f、 写入(html_字符串)
    f、 关闭()
    返回HttpResponse(html_字符串,mimetype='text/plain')
    
    html
    
    $('#link1')。单击($('#result1')。加载('post/query/{{minion.name}');
    

  • 文件系统只是一个测试。我在列表中有多个项,所以我使用一个类。我现在有了一个jQuery函数,它可以给我一个带有仆从名称的警报。接下来是加载部分。谢谢单击($('result1).load(…)
    中的'result1'是否正确?是否应该是
    #result1
    ?是否缺少一些关闭参数?`@IAbstract感谢您指出。但是,正如我所说,代码没有经过测试。
    
    #views.py --note ignore file system it is a test output    
    def get_miniondetail(request, minion_id):
    
        detail = minion_id
        context = {'minion_detail': detail}
    
        html_string = '<html>' + detail + '</html>'
    
        f = open('test.html', 'w+')
        f.write(html_string)
        f.close()
    
        return HttpResponse(html_string, mimetype='text/plain')
    
    <a href="javascript:void(0);" id="link1">{{ minion.name }}</a>
    <div id="result1"></div>
    <script>
    
      $('#link1').click($('#result1').load('post/query/{{ minion.name }}'));
    </script>