You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PHP中onchange函数HTML实体转换异常:参数单引号转义问题求助

问题解决:CakePHP中onchange事件参数单引号包裹问题

问题分析

当前代码存在两个核心问题:

  1. CakePHP表单助手默认会转义HTML属性中的特殊字符,导致手动拼接的单引号被转成'实体。
  2. json_encode($abstractionDayList)的结果未被单引号包裹,同时末尾多了一个错误的单引号,导致输出语法异常。

解决方案

修改代码时,需要关闭该属性的HTML转义,同时正确为所有参数添加单引号包裹:

'onchange' => 'return check_holiday_dates_on_application(\'' . $this->Url->webroot('') . '\', \'' . $token . '\', \'' . json_encode($abstractionDayList) . '\');',
'escape' => false

关键说明

  • 添加'escape' => false:禁用CakePHP对该属性值的HTML转义,确保单引号能直接输出为'而非'。
  • 为json_encode结果添加单引号:在json_encode($abstractionDayList)前后拼接\',保证生成的JSON字符串作为JS函数的字符串参数被正确包裹。
  • 修正单引号位置:调整后所有参数的单引号配对正确,避免语法错误。

预期输出

修改后生成的HTML将符合需求:

onchange="return check_holiday_dates_on_application('webroot','token','abstractionDayList');"

内容的提问来源于stack exchange,提问作者Scrottz

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.29 16:26:13