[英]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)
的 Output 應該是app\models\Page
但是在 controller 這個appmodelsPage
是我如何通過將它作為 AJAX 請求發送回來的
AJAX 代碼:-
function loadInlineEditor(data) {
$.ajax({
url: '<?= Url::toRoute(["//url"]) ?>',
type: 'POST',
data: data,
dataType: 'json'
})
Output 代碼:-
Array
(
[class] => appmodelsPage
[model_id] => 1
[attribute] => description
)
刪除斜線的不是 ajax。 因為php生成的js代碼是這樣的:
loadInlineEditor({
class:'app\models\Page',
model_id: 1,
attribute:'description'
})
但是 JS 字符串中的\
(反斜杠)字符用作轉義字符。 如果你想在 JS 字符串中使用反斜杠,你必須將它自己轉義為\\
。
為此,您可以使用 addlashes addslashes()
php function 或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
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.