如何使用json转储将2个变量传递给ajax函数?
我想在html代码中将两个变量:scenario_name和scenario_id从我的视图传递给我的ajax函数 因此,基本上在数据库中,每个组织可以有多个场景。组织和场景模型各有2个字段:id字段和名称字段 我的另一个疑问是,一旦我将其传递给ajax,我如何访问传递的变量 我的观点如何使用json转储将2个变量传递给ajax函数?,ajax,django,django-views,Ajax,Django,Django Views,我想在html代码中将两个变量:scenario_name和scenario_id从我的视图传递给我的ajax函数 因此,基本上在数据库中,每个组织可以有多个场景。组织和场景模型各有2个字段:id字段和名称字段 我的另一个疑问是,一旦我将其传递给ajax,我如何访问传递的变量 我的观点 from django.shortcuts import render, redirect from Organization.models import Organization from django.htt
from django.shortcuts import render, redirect
from Organization.models import Organization
from django.http import HttpResponse
from Scenario.models import Scenario
import json
from django.core import serializers
def alertindex(request):
return render(request, 'alertindex.html', {
'Organization': Organization.objects.all(),
})
def get_scenario(request):
org_id = request.GET.get('org_id')
organization = Organization.objects.get(pk=int(org_id))
scenario = organization.scenario_set.all()
scenarios = serializers.serialize("json", scenario)
return scenarios
url.py
from . import views
from django.conf.urls import url
urlpatterns = [
# Add alert url
url(r'^$', views.alertindex, name='alertindex'),
# Bind data in scenario drop down
url(r'^/Scenario$', views.get_scenario, name='Get_Scenario'),
]
我的ajax函数
var orgID = $(this).val();
var scenarios = '{{ scenarios }}'
$.ajax({
type: "GET",
url: "{% url 'Get_Scenario' %}",
data: { org_id: orgID},
success: function () {
var udata = "";
for (var i = 0; i < scenarios.length; i++) {
udata = udata + "<option value='"+ scenarios[i].scenario_id + "'>" + scenarios[i].scenario_name + "</option>"
$("#txtScenario").append(udata);
}
},
});
var orgID=$(this.val();
var scenarios='{{scenarios}}'
$.ajax({
键入:“获取”,
url:“{%url'获取\u方案“%””,
数据:{org_id:orgID},
成功:函数(){
var udata=“”;
对于(var i=0;i
url获取场景将我链接到具有函数获取场景的视图
我面临的错误是“str”对象没有属性“get”
回溯:
文件“/Users/anirudhchakravarthy/anaconda3/lib/python3.6/site packages/django/core/handlers/exception.py”,内文第35行
响应=获取响应(请求)
文件“/Users/anirudhchakravarthy/anaconda3/lib/python3.6/site packages/django/utils/deprecation.py”,第97行,在调用中
响应=自我处理\响应(请求、响应)
文件“/Users/anirudhchakravarthy/anaconda3/lib/python3.6/site packages/django/middleware/clickjacking.py”,第26行,进程响应中
如果response.get('X-Frame-Options')不是None:
AttributeError:“str”对象没有属性“get”
任何帮助都将不胜感激 您可以使用
JsonResponse
。下面是示例代码
(最好检查try/exception并在找不到对象时发送404)
有关
JsonResponse
的更多信息,请选中您可以使用JsonResponse
。下面是示例代码
(最好检查try/exception并在找不到对象时发送404)
有关
JsonResponse
的更多信息,请检查问题是否已解决?:(请上传您的完整视图。您只需将其传递到上下文数据,然后使用模板中的所有序列化数据。不幸的是,没有。我面临一个重复错误。只是更新了问题,因为我忘了提到错误。确定,然后请上传您的完整视图。如果您可能需要,我还添加了回溯。您没有解决问题吗?:(请上传您的完整视图。您只需将其传递到上下文数据,然后使用模板中的所有序列化数据。不幸的是,没有。我面临一个重复错误。只是更新了问题,因为我忘了提到错误OK,然后请上传您的完整视图。如果您可能需要,我还添加了回溯谢谢!一个小问题在上,此处使用的django上下文在哪里?此视图不使用django上下文。您只需通过JsonResponse
发送json数据,因此不必渲染上下文数据。在alertindex
中,render
函数将使用django上下文。还有一件事,错误现在已经消失,数据正在传递。但我无法执行此操作访问ajax函数中的选项。你能最终帮我解决这个问题吗?你说不能访问选项是什么意思?在ajax函数的选项标记中,没有收到数据。谢谢!一个小问题,这里使用的django上下文在哪里?此视图不使用django上下文。你只需通过alertindex
中,呈现
函数将使用django上下文。还有一件事,错误现在消失了,数据正在传递。但我无法访问ajax函数中的选项。您能最终帮助我解决这个问题吗?您不能这样做是什么意思访问选项?在ajax函数的选项标记中,数据未被接收。
from django.http import JsonResponse
def get_scenario(request):
org_id = request.GET.get('org_id')
# you can do your own validation
try:
organization = Organization.objects.get(pk=int(org_id))
scenario = organization.scenario_set.all()
scenarios = serializers.serialize("json", scenario)
except ObjectDoesNotExist:
data = {
'result': 'fail',
}
return JsonResponse(status=404, data)
data = {
"scenarios": scenarios,
# add more data you want
}
return JsonResponse(data)