程序问答   发布时间:2022-06-01  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了Symfony v2.8 Response( $message ) 方法“返回”超过预期大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

如何解决Symfony v2.8 Response( $message ) 方法“返回”超过预期?

开发过程中遇到Symfony v2.8 Response( $message ) 方法“返回”超过预期的问题如何解决?下面主要结合日常开发的经验,给出你关于Symfony v2.8 Response( $message ) 方法“返回”超过预期的解决方法建议,希望对你解决Symfony v2.8 Response( $message ) 方法“返回”超过预期有所启发或帮助;

我的目标是向我的网页返回一条消息,在那里显示它,但不仅仅是消息,返回的值包含错误页面的消息和 HTML 代码!

这里是 Symfony 捆绑动作路由和函数定义:

/**
 * @Route("/UtilitIEs/getmessages/{CallSign}/{logindatetiR_494_11845@E}",*        defaults={"callSign"="","logindatetiR_494_11845@e"=""})
 *
 * @return:     Json String.
 *
 */

public function getmessagesAction( $callSign,$logindatetiR_494_11845@e ) { ... }

我正在使用以下代码将消息结果返回给 AJAX 调用:

由 AJAX 调用调用的服务器端 php 代码......

$message = 'Some message to be displayed.';

// Return to the page and display the message ...

return new Response( $message );  // InspecTing $message shows only
                                  // 'Some message to be displayed.'

调用上述代码并接收响应的客户端 JavaScript 代码:

$.AJAX( { // Send form data to the same page that the page came from
          type:        'POST',data:        data,cache:       false,async:       true,ContentType: false,enctype:     'multipart/form-data',processData: false
        } )
.done( function( data,textStatus,jqXHR ) { ... } // InspecTing data
                                                    // shows more than
                                                    // 'Some ...
.fail( function( jqXHR,errorThrown ) { ... }

当断点设置在 return new Response( $message );.done(...) 函数的第一个可执行行时,php 脚本执行到达 return new Response( $message ); 语句处的断点,没有任何错误,我可以看到参数的值是“要显示的一些消息。”,正如预期的那样,但是当在 .done() 函数的第一行暂停时,数据参数的值是: Some message to be 'displayed.<!DOCTYPE HTML><HTML>...</HTML>

如果将 HTML 代码放在文件中并加载到浏览器中,它看起来有点像这样:

Whoops,looks like something went wrong.
1/1 FatalErrorException in deBUG-eval(1) : eval()'d code line 1:
Parse Error: Syntax error,unexpected ')'
in deBUG-eval(1) : eval()'d code line 1

一条明显的错误消息,但我的代码没有使用任何可能失败的 eval() 语句,并且执行到 Response 语句没有任何错误。这是 Symfony Response 语句方法/函数中的错误吗?如果没有,我怎样才能找出真正发生的事情,以便我可以解决它?

跟进

更改服务器端代码以对 Json 字符串进行编码,然后在客户端对其进行解码无济于事。

服务器端 php 代码

// Return to the login page and display the message ...

// $message'value => '{ "message":"' . $message . '"}';

$message = Json_encode( [ 'message' => $message ] ); 
return new Response( $message );

客户端 JavaScript:

    ***unchaged***

在这种情况下,我仍在检查数据参数,但它现在包含 Json 编码的消息和 HTML 错误页面代码。将此提供给 JsON.parse( data ); 语句以将 Json 数据转换为 JavaScript 对象会导致 JavaScript 冻结。这不是 Json 问题,附加到我的消息末尾的 HTML 代码问题仍然存在。

谢谢

解决方法

这不是一条非常明确的错误消息,但听起来您的错误来自 Xdebug,而不是 php

您可以看到类似的问题 here。

我会在 phpStorm 调试选项卡中检查您的“手表”选项卡,并且从 phpStorm 转到 Run > View Breakpoints 并删除所有这些选项卡。为确保您也可以暂时停用 XDebug(通过 php.ini 设置)以确认问题消失。

,

尝试返回 new JsonResponse($json) 而不是 new Response($json)

如:

use Symfony\Component\httpFoundation\JsonResponse;

// ...
return new JsonResponse(['message' => $message]);

如果您真的(我的意思是真的)无论出于何种原因想要返回响应,您也可以这样做:

$response = new Response(json_encode(['message' => $message]);
$response->headers->set('Content-Type','application/json');

return $response;

请记住,我从未尝试过最后一种选择,因为 JsonResponse 一直对我有用。此外,JsonResponse 扩展了 Response 类,因此如果您需要 Response 类中的任何内容,您可以在 JsonResponse 中获取。

由于此 Symfony Documentation,最后一个响应示例附加到此答案中。

大佬总结

以上是大佬教程为你收集整理的Symfony v2.8 Response( $message ) 方法“返回”超过预期全部内容,希望文章能够帮你解决Symfony v2.8 Response( $message ) 方法“返回”超过预期所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。
标签:)