2017-07-28 71 views
0

我有簡單的Django項目名稱阿賈克斯。而我安裝了這個項目的名稱促銷碼只有一個應用程序。 我在這個項目中的問題是js和python之間的Ajax調用。我不能使用ajax調用函數處理Succes。錯誤:函數()結果我得到了。 我知道我在Ajax調用函數促銷碼的應用程序和URL映射urls.py錯誤,但我解決不了這個。請幫我:)Ajax調用JS用在Python

我主要urls.py文件是:

from datetime import datetime 
from django.conf.urls import url,include 
import django.contrib.auth.views 

urlpatterns = [ 
    url(r'^', include('promocode.urls'))] 

我的促銷碼應用urls.py文件是:

from django.conf.urls import url, include 
from . import views 

urlpatterns = [ 
     url(r'^$', views.index,name='index'), 
     url(r'^$', views.extract_json)] 

我views.py文件是:

from django.shortcuts import render 
import json 
from suds.client import Client as Client 
from django.http.response import HttpResponse 


def index(request): 
    return render(request,'promocode/index.html') 


def get_result_by_code(promocode): 
    url = "http://service.emobile.az:8080/ws-loyalty- 
    program/cp/loyaltyprogram.wsdl" 
    client = Client(url) 
    result = client.service.loyaltyProgramCalculate(
     amount=1000, 
     authKey='testaede35740f2b9d2248b0ab6b878', 
     identicalCode=promocode, 
     terminalCode=2148) 
    if str(result[2]) == "SUCCESS": 
     status = 1 
    else: 
     status = 0 
    return status 


def extract_json(request): 
    data = json.loads(request.body) 
    status = get_result_by_code(data['4545']) 
    result = dict(
     status=status, 
     message='Result Succesfully' 
    ) 
    return HttpResponse(json.dumps(result), mimetype='application/json') 

我的index.html文件是:

<!DOCTYPE html> 
<html> 
<head> 
<script 
src="https://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"> 
</script> 
</head> 
<body> 

<h3>Promocode Test </h3> 

<label for="bakcelPromo">Promocode</label> <br> 
<input type="text" name="bakcelPromo" id="bakcelPromo" class="form-control"> 
<br> 
<br> 
<label for="sum">Sum Insured</label> <br> 
<input type="text" name="sum" id="sum" value="" class="form-control"> 

<p></p> 

<button onclick="get_result_by_code();">Hesabla</button> 

<br> 
<br> 
<label for="premium">Premium</label> <br> 
<input id="premium" type="text" /> 
<br> 
<br> 

<script> 
function get_result_by_code() { 
var sum_insured = document.getElementById("sum").value * 0.035; 
var promocode = document.getElementById("bakcelPromo").value; 

$.ajax({ 
    type: "GET", 
    url: "promocode/" , 
    dataType: "json", 
    async: true, 
    data: { "promocode": promocode }, 
    success: function (response) { 
     if (response.status == 1) { 
      sum_insured = sum_insured * 0.8 

     } else { 
      sum_insured = sum_insured * 1.5 
      } 
     $('#output').html(response.message); 

     }, 
     error: function() { 
      alert('There was an error communicating with the server.'); 
     } 
}); 
document.getElementById("premium").value = parseInt(sum_insured); 
} 
</script> 
</body> 
</html> 
+0

首先2個網址與相同的正則表達式模式指向兩個不同的看法 第二,你可以爲我提供的截圖可以查看想象你想要做 三阿賈克斯網址什麼是不正確的,你可以使用網址模板標籤'{%URL「命名空間:視圖名」數據%}' –

+0

這裏是屏幕的鏈接:[鏈接](https://drive.google.com/file/d/0BwGtk0EG74ekUmZUMVZ4TzVfcFU/view)我輸入promocode並保險。這個promocode通過js ajax和python函數發送給python函數,調用webservise並得到結果1或0。然後這個結果由ajax返回給js,最後在返回結果的基礎上計算溢價。問題在於ajax回調過程。你能否更新我上面寫的文件爲正確的,並再次寫在這裏嗎? –

回答

0

我主要urls.py文件是:

from datetime import datetime 
from django.conf.urls import url,include 
import django.contrib.auth.views 

urlpatterns = [ 
    url(r'^', include('promocode.urls'), namespace='appname')] 

我的促銷碼應用urls.py文件是:

from django.conf.urls import url, include 
from . import views 

urlpatterns = [ 
     url(r'^$', views.index,name='index'), 
     url(r'^promo/$', views.extract_json, name='extract_json')] 

我views.py文件:

from django.shortcuts import render 
import json 
from suds.client import Client as Client 
from django.http.response import HttpResponse 


def index(request): 
    return render(request,'promocode/index.html') 


def get_result_by_code(promocode): 
    url = "http://service.emobile.az:8080/ws-loyalty- 
    program/cp/loyaltyprogram.wsdl" 
    client = Client(url) 
    result = client.service.loyaltyProgramCalculate(
     amount=1000, 
     authKey='testaede35740f2b9d2248b0ab6b878', 
     identicalCode=promocode, 
     terminalCode=2148) 
    if str(result[2]) == "SUCCESS": 
     status = 1 
    else: 
     status = 0 
    return status 


def extract_json(request): 
    if request.is_ajax(): 
     promocode = request.POST.get("promocode") 
     status = get_result_by_code(promocode) 
     result = dict(
      status=status, 
      message='Result Succesfully' 
     ) 
     return HttpResponse(json.dumps(result), mimetype='application/json') 

我的index.html文件是:

<!DOCTYPE html> 
<html> 
<head> 
<script 
src="https://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"> 
</script> 
</head> 
<body> 

<h3>Promocode Test </h3> 

<label for="bakcelPromo">Promocode</label> <br> 
<input type="text" name="bakcelPromo" id="bakcelPromo" class="form-control"> 
<br> 
<br> 
<label for="sum">Sum Insured</label> <br> 
<input type="text" name="sum" id="sum" value="" class="form-control"> 

<p></p> 

<button onclick="get_result_by_code();">Hesabla</button> 

<br> 
<br> 
<label for="premium">Premium</label> <br> 
<input id="premium" type="text" /> 
<br> 
<br> 

<script> 
function get_result_by_code() { 
var sum_insured = document.getElementById("sum").value * 0.035; 
var promocode = document.getElementById("bakcelPromo").value; 

$.ajax({ 
    method: "POST", 
    url: "{% url "appname:extract_json" %}" , 
    async: true, 
    data: { "promocode": promocode }, 
    success: function (response) { 
     if (response.status == 1) { 
      sum_insured = sum_insured * 0.8 

     } else { 
      sum_insured = sum_insured * 1.5 
      } 
     $('#output').html(response.message); 

     }, 
     error: function() { 
      alert('There was an error communicating with the server.'); 
     } 
}); 
document.getElementById("premium").value = parseInt(sum_insured); 
} 
</script> 
</body> 
</html> 
+0

我得到了這樣的錯誤:在之前分配** –

+0

使用'ipdb'跟蹤代碼,知道哪裏是錯誤引用/宣傳/ ** ** 局部變量「結果」 ** UnboundLocalError,我沒有運行我剛傳達了這個想法。複製粘貼意識形態工作不 –

+0

明白了,解決了這個問題,感謝@ A.Raouf 還有一個問題,如何我在計算中使用AJAX的返回值? 我的ajax調用函數作爲結果的返回值= {'status':1,'message':....} 成功:function(response){ if(response.status = 1){ data = $。parseJSON(結果); data = data [0]; 如果(數據== 1){ sum_insured1 = sum_insured * 0.5 } 否則{ sum_insured1 = sum_insured * 2.0} } 像這樣或? –