0

次の入力があります。

<input id="country_name" type"text" />
<input id="country_id" type"text" />

country_nameそして、onchange で入力に挿入する国に対応する ID に影響を与えたいと考えています。だから私はこのajax関数を使用します:

$("#country_name").change({
    $.ajax({
        url: "/country/getid/",
        method: 'GET',
        datatype: "json",
        data: {'country_name': $("#country_name").val()},
        success: function(response) {   
            $("#country_id").val() = response.country_id;
        }
    });
});

そして、私の見解はこのようなものです(の同じURLにリンクされていますurls.py

def get_country_id(country_name_get):
    countries = Countries.objects.filter(country_name=country_name_get)
    if countries.exists():
        for country in countries:
            country_id = country.country_id
    else:
        country_id = ''
return country_id 

私のurls.pyに次の行を追加しました:

url(r'^/country/getid/$', 'des.services.get_country_id', name='get_country_id'),

Google Chrome で要素を調べたところ、次のエラーが表示されました。

Uncaught SyntaxError: Unexpected token .

エラーがどこから来たのか分かりますか?

私はまだcountry_id入力に何も得ません。私のコードに問題がありますか、それとも別の解決策がありますか?

4

3 に答える 3

3

ビューは を返しませんHttpResponse。さらに、country_idJSON データとして返す必要があります。それぞれの国名がデータベースに 1 回しか表示されないと仮定すると、クエリセットにある最後のものforのみを取得するため、ビューのループは意味がありません。また、Django モデルの名前は常に複数形ではなく単数形にする必要があります。つまり、.country_idcountry_nameCountryCountries

AJAX 関数とビューを次のように書き直します。

$("#country_name").change({
    $.ajax({
        type: 'GET',
        dataType: 'json',
        url: "/country/getid/",
        data: {'country_name': $("#country_name").val()},
        success: function(response) {   
            $("#country_id").val() = response.country_id;
        }
    });
});

景色:

import json
from django.http import HttpResponse

def get_country_id(request):
    country_name = request.GET['country_name']
    response = {}

    try:
        country = Countries.objects.get(country_name=country_name)
        response['country_id'] = country.country_id
    except Countries.DoesNotExist:
        response['country_id'] = ''

    return HttpResponse(json.dumps(response), mimetype='application/json') 
于 2013-04-08T12:04:22.790 に答える
1

ajax の URL には app_name が必要です。あなたのアプリの正確な名前がわからないのでapp_name、サンプルを入れました。正しいものに変更するだけです。

$("#country_name").change({
    $.ajax({
        type: "GET",
        url: "/app_name/country/getid/",
        data: {'country_name': $("#country_name").val()},
        contentType: "application/json;charset=utf-8",
        dataType: "json",
        success: function(data) {   
            $("#country_id").val() = data;
        }
    });
});

リクエストを渡す必要があります。country_name_get

def get_country_id(request):
    country_name = request.GET['country_name']

    try:
        country = Countries.objects.get(country_name=country_name)
        country_id = country.id
    except Countries.DoesNotExist:
        country_id = ''

    return HttpResponse(country_id) 

あなたのURLでは、これが原因で疑いがdes.services.get_country_idあります。

 urlpatterns = patterns('app_name.views',
      url(r'^country/getid/$', 'get_country_id', name='get_country_id'),
 )  

または

 urlpatterns = patterns('',
      url(r'^country/getid/$', 'app_name.views.get_country_id', name='get_country_id'),
 )

どのように定義するかによって異なります

于 2013-04-08T14:51:49.517 に答える