通过 ajax 从名称空间中删除斜杠向控制器发送请求?
Sending request to the controller via ajax removing slashes from namespace?
onclick="loadInlineEditor({
class:'<?= get_class($content) ?>',
model_id:<?= $content->id ?>,
attribute:'description'
})"
get_class($content)
的输出应为 app\models\Page
但是在控制器内部,这个 appmodelsPage
是我通过将其作为 AJAX 请求
发送回来的方式
AJAX 代码:-
function loadInlineEditor(data) {
$.ajax({
url: '<?= Url::toRoute(["//url"]) ?>',
type: 'POST',
data: data,
dataType: 'json'
})
输出代码:-
Array
(
[class] => appmodelsPage
[model_id] => 1
[attribute] => description
)
不是 ajax 删除斜线。因为php生成的js代码是这样的:
loadInlineEditor({
class:'app\models\Page',
model_id: 1,
attribute:'description'
})
但是JS字符串中的\
(反斜杠)字符被用作转义字符。如果你想在 JS 字符串中使用反斜杠,你必须自己将其转义为 \
.
为此,您可以使用 addslashes()
php 函数或 json_encode()
.
onclick="loadInlineEditor({
class:'<?= addslashes(get_class($content)) ?>',
model_id:<?= $content->id ?>,
attribute:'description'
})"
json_encode
将在字符串周围添加 "
,因此您不必也使用引号。
onclick="loadInlineEditor({
class:<?= json_encode(get_class($content)) ?>,
model_id:<?= $content->id ?>,
attribute:'description'
})"
因为****是一个转义字符,所以你需要先转义它,然后再将他存储在class属性中。
因此您的代码变为:
onclick="loadInlineEditor({
class:'<?= addslashes(get_class($content)) ?>',
model_id:<?= $content->id ?>,
attribute:'description'
})"
事实上,addslashes 将 app\models\Page 发送到 class 属性并将其保存到 app\models\Page
onclick="loadInlineEditor({
class:'<?= get_class($content) ?>',
model_id:<?= $content->id ?>,
attribute:'description'
})"
get_class($content)
的输出应为 app\models\Page
但是在控制器内部,这个 appmodelsPage
是我通过将其作为 AJAX 请求
AJAX 代码:-
function loadInlineEditor(data) {
$.ajax({
url: '<?= Url::toRoute(["//url"]) ?>',
type: 'POST',
data: data,
dataType: 'json'
})
输出代码:-
Array
(
[class] => appmodelsPage
[model_id] => 1
[attribute] => description
)
不是 ajax 删除斜线。因为php生成的js代码是这样的:
loadInlineEditor({
class:'app\models\Page',
model_id: 1,
attribute:'description'
})
但是JS字符串中的\
(反斜杠)字符被用作转义字符。如果你想在 JS 字符串中使用反斜杠,你必须自己将其转义为 \
.
为此,您可以使用 addslashes()
php 函数或 json_encode()
.
onclick="loadInlineEditor({
class:'<?= addslashes(get_class($content)) ?>',
model_id:<?= $content->id ?>,
attribute:'description'
})"
json_encode
将在字符串周围添加 "
,因此您不必也使用引号。
onclick="loadInlineEditor({
class:<?= json_encode(get_class($content)) ?>,
model_id:<?= $content->id ?>,
attribute:'description'
})"
因为****是一个转义字符,所以你需要先转义它,然后再将他存储在class属性中。
因此您的代码变为:
onclick="loadInlineEditor({
class:'<?= addslashes(get_class($content)) ?>',
model_id:<?= $content->id ?>,
attribute:'description'
})"
事实上,addslashes 将 app\models\Page 发送到 class 属性并将其保存到 app\models\Page