Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/423.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Django:语法错误:意外标记<;_Javascript_Jquery_Ajax_Django_Django Views - Fatal编程技术网

Javascript Django:语法错误:意外标记<;

Javascript Django:语法错误:意外标记<;,javascript,jquery,ajax,django,django-views,Javascript,Jquery,Ajax,Django,Django Views,我正在使用django和jquery来使用ajax上传文件。但是,在文件上传之后(并且文件确实正确上传;数据库更新并且它们在服务器上),javascript返回一个SyntaxError:Unexpected token,根据文档,form\u valid()方法需要以HTTPResponse的形式返回JSON。在超类上调用form\u valid()将覆盖前两行上创建的响应 编辑-这对我有用: def response_mimetype(request): if "application/

我正在使用django和jquery来使用ajax上传文件。但是,在文件上传之后(并且文件确实正确上传;数据库更新并且它们在服务器上),javascript返回一个
SyntaxError:Unexpected token,根据文档,
form\u valid()
方法需要以
HTTPResponse
的形式返回JSON。在超类上调用
form\u valid()
将覆盖前两行上创建的响应

编辑-这对我有用:

def response_mimetype(request):
  if "application/json" in request.META['HTTP_ACCEPT']:
    return "application/json"
  else:
    return "text/plain"

class UploadedFileCreateView(CreateView):
  model = UploadedFile
  form_class = UploadedFileForm

  def form_valid(self, form):
    self.object = form.save(commit=False)
    self.object.project_id = self.kwargs['proj_key']
    self.object.save()
    f = self.request.FILES.get('file')

    data = [{
      'name': self.object.name(),
      'url': "/uploads/xmlfiles/" + self.object.name().replace(" ", "_"),
      'type': "application/xml",
      'size': self.object.file.size,
      'delete_url': reverse('fileupload:upload-delete',
        kwargs={'pk':self.object.id,
        'proj_key':self.kwargs['proj_key']}),
      'delete_type': "DELETE"}]

    return HttpResponse(simplejson.dumps(data), content_type = response_mimetype(self.request))
上面链接中的代码将ajax响应代码捆绑为一个Mixin,它将允许项目中的其他表单重用代码


在Firefox插件Firebug、Net选项卡或Chrome等价物中查看对Ajax调用的响应将有所帮助。这些将显示请求和响应标题,确保发送和返回正确的设置。

在Chrome中尝试,打开DevTools,并确保单击“源”选项卡上的“暂停未捕获异常”切换。这将帮助您定位错误,并有望进入调试的下一步。您正在创建
JSONResponse
实例,但不会从视图中返回它。您的JSON调用正在获取任何
super(UploadedFileCreateView,self)。form\u valid
返回-HTTP重定向,如果内存可用。始终查看从服务器返回的内容,使用控制台中的net选项卡。对于您的代码,我会将
空文件上载结果作为javascript错误,虽然控制台中似乎没有javascript异常。啊,好的,你能发布你的html/javascript吗?然后我很乐意正确地调试代码,;)。非常感谢!这是我的模板:这里引用了javascript:@Plasma我已经调试了一个来自github的克隆,我上面帖子中编辑的
form\u valid()
正在为我使用firefox中的
jquery文件上传
插件。非常好看的项目,顺便说一句。这解决了我的问题。谢谢你多跑了一英里!
class UploadedFile(models.Model):
    """This represents a file that has been uploaded to the server."""
    STATE_UPLOADED = 0
    STATE_ANNOTATED = 1
    STATE_PROCESSING = 2
    STATE_PROCESSED = 4
    STATES = (
        (STATE_UPLOADED, "Uploaded"),
        (STATE_ANNOTATED, "Annotated"),
        (STATE_PROCESSING, "Processing"),
        (STATE_PROCESSED, "Processed"),
    )

    status = models.SmallIntegerField(choices=STATES,
        default=0, blank=True, null=True) 
    file = models.FileField(upload_to=settings.XML_ROOT)
    project = models.ForeignKey(Project)

    def __unicode__(self):
        return self.file.name

    def name(self):
        return os.path.basename(self.file.name)

    def save(self, *args, **kwargs):
        if not self.status:
            self.status = self.STATE_UPLOADED
        super(UploadedFile, self).save(*args, **kwargs)

    def delete(self, *args, **kwargs):
        os.remove(self.file.path)
        self.file.delete(False)
        super(UploadedFile, self).delete(*args, **kwargs)

    def get_absolute_url(self):
        return u'/upload/projects/%d' % self.id 

class UploadedFileForm(ModelForm):
    class Meta:
        model = UploadedFile
        exclude = ('project',)
def response_mimetype(request):
  if "application/json" in request.META['HTTP_ACCEPT']:
    return "application/json"
  else:
    return "text/plain"

class UploadedFileCreateView(CreateView):
  model = UploadedFile
  form_class = UploadedFileForm

  def form_valid(self, form):
    self.object = form.save(commit=False)
    self.object.project_id = self.kwargs['proj_key']
    self.object.save()
    f = self.request.FILES.get('file')

    data = [{
      'name': self.object.name(),
      'url': "/uploads/xmlfiles/" + self.object.name().replace(" ", "_"),
      'type': "application/xml",
      'size': self.object.file.size,
      'delete_url': reverse('fileupload:upload-delete',
        kwargs={'pk':self.object.id,
        'proj_key':self.kwargs['proj_key']}),
      'delete_type': "DELETE"}]

    return HttpResponse(simplejson.dumps(data), content_type = response_mimetype(self.request))