小编cez*_*zar的帖子

JavaScript/jQuery通过POST使用JSON数据下载文件

我有一个基于jquery的单页webapp.它通过AJAX调用与RESTful Web服务进行通信.

我正在努力完成以下任务:

  1. 将包含JSON数据的POST提交到REST URL.
  2. 如果请求指定了JSON响应,则返回JSON.
  3. 如果请求指定了PDF/XLS/etc响应,则返回可下载的二进制文件.

我现在有1和2工作,客户端jquery应用程序通过基于JSON数据创建DOM元素来显示网页中返回的数据.从Web服务的角度来看,我也有#3工作,这意味着如果给出正确的JSON参数,它将创建并返回二进制文件.但我不确定在客户端javascript代码中处理#3的最佳方法.

是否有可能从这样的ajax调用中获取可下载的文件?如何让浏览器下载并保存文件?

$.ajax({
    type: "POST",
    url: "/services/test",
    contentType: "application/json",
    data: JSON.stringify({category: 42, sort: 3, type: "pdf"}),
    dataType: "json",
    success: function(json, status){
        if (status != "success") {
            log("Error loading data");
            return;
        }
        log("Data loaded!");
    },
    error: function(result, status, err) {
        log("Error loading data");
        return;
    }
});
Run Code Online (Sandbox Code Playgroud)

服务器响应以下标头:

Content-Disposition:attachment; filename=export-1282022272283.pdf
Content-Length:5120
Content-Type:application/pdf
Server:Jetty(6.1.11)
Run Code Online (Sandbox Code Playgroud)

另一个想法是生成PDF并将其存储在服务器上并返回包含该文件的URL的JSON.然后,在ajax成功处理程序中发出另一个调用,执行以下操作:

success: function(json,status) {
    window.location.href = json.url;
}
Run Code Online (Sandbox Code Playgroud)

但这样做意味着我需要对服务器进行多次调用,而我的服务器需要构建可下载的文件,将它们存储在某处,然后定期清理该存储区域.

必须有一种更简单的方法来实现这一目标.想法?


编辑:在查看$ .ajax的文档后,我看到响应dataType只能是其中之一xml, html, script, json, jsonp, text,所以我猜测没有办法使用ajax请求直接下载文件,除非我在使用中嵌入二进制文件@VinayC答案中建议的数据URI方案(这不是我想做的事情).

所以我想我的选择是:

  1. 不使用ajax而是提交表单帖子并将我的JSON数据嵌入到表单值中.可能需要搞乱隐藏的iframe等.

  2. 不使用ajax而是将我的JSON数据转换为查询字符串以构建标准GET请求并将window.location.href设置为此URL.可能需要在我的单击处理程序中使用event.preventDefault()以防止浏览器从应用程序URL更改. …

javascript ajax rest jquery

241
推荐指数
9
解决办法
34万
查看次数

获取TypeError:__ init __()缺少1个必需的位置参数:'on_delete'尝试在带有条目的子表后添加父表

我的sqlite数据库中有两个类,一个名为的父表Categorie和一个名为的子表Article.我首先创建了子表类并添加了条目.所以首先我有这个:

class Article(models.Model):
    titre=models.CharField(max_length=100)
    auteur=models.CharField(max_length=42)
    contenu=models.TextField(null=True)
    date=models.DateTimeField(
        auto_now_add=True,
        auto_now=False,
        verbose_name="Date de parution"
    )

    def __str__(self):
        return self.titre
Run Code Online (Sandbox Code Playgroud)

在我添加了父表后,现在我models.py看起来像这样:

from django.db import models

# Create your models here.
class Categorie(models.Model):
    nom = models.CharField(max_length=30)

    def __str__(self):
        return self.nom


class Article(models.Model):
    titre=models.CharField(max_length=100)
    auteur=models.CharField(max_length=42)
    contenu=models.TextField(null=True)
    date=models.DateTimeField(
        auto_now_add=True,
        auto_now=False,
        verbose_name="Date de parution"
    )
    categorie = models.ForeignKey('Categorie')

    def __str__(self):
        return self.titre
Run Code Online (Sandbox Code Playgroud)

所以当我跑步时python manage.py makemigrations <my_app_name>,我收到这个错误:

Traceback (most recent call last):
  File "manage.py", line 15, in <module>
    execute_from_command_line(sys.argv)
  File …
Run Code Online (Sandbox Code Playgroud)

python django django-models django-2.0

74
推荐指数
4
解决办法
10万
查看次数

Django获取应用程序中的模型列表

所以,我在MyApp文件夹中有一个models.py文件:

from django.db import models
class Model_One(models.Model):
    ...
class Model_Two(models.Model):
    ...
...
Run Code Online (Sandbox Code Playgroud)

它可以是大约10-15个班级. 如何找到MyApp中的所有模型并获取其名称?

由于模型不可迭代,我不知道这是否可行.

python django model

55
推荐指数
4
解决办法
3万
查看次数

删除symfony 2.8中的剩余弃用通知(232)

我是Symfony和phpUnit的新手.

我想进行一些测试,有很多折旧警告.但这并不重要,因为我现在会继续使用symfony 2.8.你知道是否可以删除它?

在此输入图像描述

我试着自己找出来,但它不起作用,你有什么想法给我的人吗?

如何删除Symfony 2.7中的弃用警告?

在Symfony 2中禁用已弃用的警告(.7)


编辑:

参考@LBA的答案

我的截图不是关于AsseticBundle的错误,而是关于"剩余弃用通知(220)".我想知道是否有某个标志显示或不显示这些警告.我很想知道我的测试结果.那可能吗 ?

php testing phpunit symfony

48
推荐指数
2
解决办法
1万
查看次数

如何更改Django管理过滤器以使用下拉列表而不是列表?

如果对于要过滤的字段,您有超过10个值,则过滤侧边栏开始变得难看且难以使用.

我正在寻找一种解决方案来替换<li>下拉选择(组合框)或类似的东西来解决同样的问题.

django django-admin

36
推荐指数
4
解决办法
2万
查看次数

如何对PHP特征进行单元测试

我想知道是否有关于如何对PHP特征进行单元测试的解决方案.

我知道我们可以测试一个使用该特性的类,但我想知道是否有更好的方法.

在此先感谢任何建议:)

编辑

另一种方法是在测试类本身中使用Trait,因为我将展示下面的内容.

我并不热衷于这种方法,因为没有保证在特征,类和PHPUnit_Framework_TestCase(在本例中)之间没有类似的方法名称:

这是一个示例特征:

trait IndexableTrait
{
    /** @var int */
    private $index;

    /**
     * @param $index
     * @return $this
     * @throw \InvalidArgumentException
     */
    public function setIndex($index)
    {
        if (false === filter_var($index, FILTER_VALIDATE_INT)) {
            throw new \InvalidArgumentException('$index must be integer.');
        }

        $this->index = $index;

        return $this;
    }

    /**
     * @return int|null
     */
    public function getIndex()
    {
        return $this->index;
    }
}
Run Code Online (Sandbox Code Playgroud)

及其测试:

class TheAboveTraitTest extends \PHPUnit_Framework_TestCase
{
    use TheAboveTrait;

    public function test_indexSetterAndGetter()
    {
        $this->setIndex(123);
        $this->assertEquals(123, …
Run Code Online (Sandbox Code Playgroud)

php phpunit unit-testing traits

36
推荐指数
3
解决办法
2万
查看次数

用于修剪任何前导或尾随空格的模板过滤器

django中是否有模板过滤器,它将修剪输入文本中的任何前导或尾随空格.

就像是: {{ var.example|trim }}

django django-template-filters

28
推荐指数
2
解决办法
2万
查看次数

Django静态页面?

我想创建一个静态页面,只有当他/她点击我的某个模型中提供的链接时才会向用户显示.我可以通过单独创建一个Python页面并调用它来实现这一点,但我想从Django调用它.用户界面应仅使用Django API构建.

有什么建议?

django django-templates django-admin

26
推荐指数
3
解决办法
2万
查看次数

使用Symfony 2.8生成表单会抛出Twig_Error_Runtime

自从几天前(2015年11月30日)发布Symfony的最后一个LTS版本以来,我开始玩它.不幸的是,我无法使用在Symfony 2.7.7中运行良好的相同代码的写操作生成CRUD.

首先,我使用bashLinux Mint 17.2 创建一个新的Symfony项目:

symfony new tasks lts
Run Code Online (Sandbox Code Playgroud)

新目录tasks是在里面创建一个新的Symfony 2.8.0项目.

app/config/parameters.yml我创建数据库后调整数据库凭据后:

app/console doctrine:database:create
Run Code Online (Sandbox Code Playgroud)

并生成一个新的包:

app/console generate:bundle --namespace=Acme/TasksBundle --format=yml
Run Code Online (Sandbox Code Playgroud)

然后我创建一个新目录src/Acme/TasksBundle/Resources/config/doctrine并为我的模型放置两个文件.这些是:

Task.orm.yml

Acme\TasksBundle\Entity\Task:
    type: entity
    repositoryClass: Acme\TasksBundle\Repository\TaskRepository
    table: task
    id:
        id:
            type: integer
            generator: { strategy : AUTO }
    fields:
        description:
            type: text
    manyToMany:
        tags:
            targetEntity: Tag
            inversedBy: tasks
            cascade: [ "persist" ]
            joinTable:
                name: task_tag
                joinColumns:
                    task_id:
                        referencedColumnName: id
                inverseJoinColumns:
                    tag_id:
                        referencedColumnName: id
Run Code Online (Sandbox Code Playgroud)

Tag.orm.yml

Acme\TasksBundle\Entity\Tag:
    type: entity
    repositoryClass: Acme\TasksBundle\Repository\TagRepository
    table: tag …
Run Code Online (Sandbox Code Playgroud)

php doctrine symfony symfony-2.8

26
推荐指数
2
解决办法
2855
查看次数

给定[]的邮箱中的地址不符合RFC 2822,3.6.2.当电子邮件在变量中时

我有一个正确的电子邮件地址.我已经回应了它.但是当我发送它时,我收到以下错误:

 Address in mailbox given [] does not comply with RFC 2822, 3.6.2. 
Run Code Online (Sandbox Code Playgroud)

为什么?我使用laravel(swift mailer)发送电子邮件.

$ email = email@address.com

然后当我发送它时,错误被抛出.

但如果我直接使用该字符串,它会发送它.

这是块:

$email = email@address.com
Run Code Online (Sandbox Code Playgroud)

php email swiftmailer laravel laravel-4

25
推荐指数
5
解决办法
8万
查看次数