0

我有一个像这样的 Ajax 和模板:

<html>
<body>

<script language="javascript" type="text/javascript">
<!-- 
//Browser Support Code
function ajaxFunction(){
    var ajaxRequest;  // The variable that makes Ajax possible!

    try{
        // Opera 8.0+, Firefox, Safari
        ajaxRequest = new XMLHttpRequest();
    } catch (e){
        // Internet Explorer Browsers
        try{
            ajaxRequest = new ActiveXObject("Msxml2.XMLHTTP");
        } catch (e) {
            try{
                ajaxRequest = new ActiveXObject("Microsoft.XMLHTTP");
            } catch (e){
                // Something went wrong
                alert("Your browser broke!");
                return false;
            }
        }
    }
    // Create a function that will receive data sent from the server
    ajaxRequest.onreadystatechange = function(){
        if(ajaxRequest.readyState == 4){
            document.myForm.time.value = ajaxRequest.responseText;
        }
    }
    url = '/home'
    ajaxRequest.open("GET", url, false);
    ajaxRequest.send(null); 
}


//-->
</script>



<form name='myForm'>
{% csrf_token %}
Name: <input type='text' onChange="ajaxFunction();" name='username' /> <br />
Time: <input type='text' name='time' id='time' value="" />
</form>
</body>
</html>

我有这样的简单观点:

from django.shortcuts import render_to_response, HttpResponse
import simplejson
from django.template.context import RequestContext
import datetime

def home(request):
    if request.GET:
        a = datetime
        return HttpResponse(simplejson.dumps(a), mimetype='application/json')
        #return render_to_response('home.html', {'a':a}, context_instance=RequestContext(request))


    else:
        return render_to_response('home.html', context_instance=RequestContext(request))

当我按下回车键时,Ajax 正在加载,但不是特定变量,而是所有模板都加载到输入框中。怎么了?

4

2 回答 2

1

这一行:

if request.GET:

检查是否有任何 GET 参数。没有,因为你没有发送任何东西。URL 只是/home. 您可以使用if request.method == 'GET',但我认为您在这里检查错误:正常请求(不是 Ajax)将是 GET。

您应该做的是将HTTP_X_REQUESTED_WITH标头作为“XmlHttpRequest”发送,然后签request.is_ajax()入视图。或者,按照建议,使用像 jQuery 这样的库——它会自动为您设置。

于 2013-04-05T09:34:17.110 回答
0

检测请求类型的正确方法是if request.method == 'GET',而不是if request.GET.

于 2013-04-05T09:32:26.587 回答