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))

Enter キーを押すと 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 に答える