1

国際文字で Djajaxice を使用すると問題が発生します...

私はdjangoテンプレートを持っています...そのテンプレートには次の選択があります:

 <select name="region" id="id" onchange="Dajaxice.crc.regions('my_callback',{'data':this.value});">
         <option value="" selected="selected" ></option>
         {% for region in regions %}
              <option value="{{ region.region }}">{{ region.region }}</option>
         {% endfor %}
    </select>

select の onchange でわかるように、regions 関数を呼び出して 2 つのパラメーターを渡しています。コールバックの名前と選択された値

ajax.py ファイルの関数は次のとおりです。

def regions(request, data):
    CityList = City.objects.filter(region__exact=data)
    out = "".join(['<option value="%s">%s</option>' % (c.city,c.city) for c in CityList])
    return simplejson.dumps(out)

dajaxice_functions.register(regions)

これは正常に機能し、地域の名前に国際文字が含まれていない場合、関連するデータを使用してテンプレート内の JavaScript 関数を問題なく呼び出します。

たとえば、「アンタルヤ」と言ってください。しかし、「ムーラ」のような地域が来ると、うまくいきません。よく調べてみると、変数データには 'Mu%u011Fla' が含まれており、Django がモデル データに正しくアクセスできるように、必要な形式であると想定しているものに戻すことができないようです。

ページの上部にある魔法の引用符を使用しました。data.decode('string-escape') でエスケープを解除し、utf-8 と back の間に押し込んでみましたが、何もうまくいかないようです.. .

これは Dajaxice、Django、または python の問題ですか... それとも、ここで本当に単純なものが欠けていますか?

私はこれを理解しようとして2日間取り組んでいます....あなたが提供できるかもしれないどんな助けにも前もって感謝します.

乾杯

4

1 に答える 1

1

わかりました、これを修正しました...

したがって、Dajaxiceを使用し、国際文字を使用している他の人は、Dajaxice.core.jsファイルの10行目を次のように変更する必要があります。

send_data.push('argv ='+ escape(JSON.stringify(argv)));

これに:

send_data.push('argv ='+ encodeURIComponent(JSON.stringify(argv)));

そして、すべてがうまく機能します。

ふぅ2日と数時間の人生がコードの濁った海に滑り込んだ.........私たち全員を助けてください!

于 2010-08-25T18:45:54.307 に答える