项目1上的ajax请求调用项目2 symfony return意外的令牌<

时间:2017-03-29 21:57:41

标签: php jquery ajax symfony cross-domain

我有两个项目,让他们称之为后端和前端。 Backend是一个Symfony3项目,Frontend是一个带有javascript的简单html页面。

我想从前端调用后端的特殊网址,以便返回一个字符串(网址)。

所以我试图做的是一个简单的ajax get请求,我想请求后端url但是这会返回

  

SyntaxError:意外的令牌"<"

(对于html dataType)和

  

SyntaxError:意外的令牌。

(对于json和jsonp dataType)。

我尝试使用dataType json,jsonp,html每次调整控制器响应时分别回答json,json和html。

当我从邮递员那里尝试这个请求时,一切正常,我得到了我的json或html。

显然我不明白。

有没有人可以解释我做错了什么以及如何做到这一点。

下面是我的前端项目ajax请求(对于那种情况下的html,但是我已经让评论过的json部分我已经过了测试......)

$.ajax({
                url: 'http://sevignemiroir.local/display',
                type: 'GET',
                dataType:  "html",
                //dataType: "jsonp"
                success: function(response) {
                    console.log('success');
                    console.log(response);
                },
                error: function (response) {
                    console.log('error');
                    console.log(response);
                }
            })

这是我的后端symfony控制器的响应

public function indexAction()
{
    //return $this->json('toto');
    return $this->render('display/test.html.twig', [
        'toto' => 'toto'
    ]);
}

test.html.twig文件:

<div>test</div>

我有点困惑:

  • 我是否必须在响应中应用特定格式才能使其正常工作?
  • 我的控制器中是否应该配置一些内容以允许来自项目外部的请求?
  • 问题是否来自跨域问题?
  • 我听说过FOSRestBundle,是否必须使用此类捆绑软件才能从项目外部发送数据?
  • 从项目调用数据到另​​一个项目的最佳做法是什么?

这些是我感到困惑的问题,如果有人愿意解释它,我将不胜感激!

我不知道这是否重要,但我使用MAMP并且两个项目都配置了虚拟主机

非常感谢那些花时间阅读本文的人:)

1 个答案:

答案 0 :(得分:0)

它现在有效,但......我不知道为什么。我在symfony(FOSRest,NelmioCors,JMS)上安装了各种捆绑包并尝试了一个jquery交叉插件插件,nohing正在工作但是当我删除它们时,它现在有效..:/