gpt4 book ai didi

javascript - 是否可以通过 ajax 从 php 返回 javascript 函数?

转载 作者:可可西里 更新时间:2023-11-01 00:39:48 25 4
gpt4 key购买 nike

是否可以通过 Ajax 从 php 返回 javascript 函数?通常我只会返回一个值,然后决定用纯 javascript 来处理它,但现在因为我正在处理 Apache Cordova 移动应用程序,所以我想以不同的方式做事。

account = localStorage.getItem("account");
account = JSON.parse(account);

$.ajax({
type: "POST",
url: example.php,
data: { account = account.rule }
});

.php

$isAdmin = $conn->prepare("SELECT role FROM users WHERE username = :username");
$isAdmin->bindParam(":username", $username);
$isAdmin->execute();
$result = $isAdmin->fetch(PDO::FETCH_ASSOC);
if($result){
$result = "<script>
$("header nav").append(
$("<a />").attr("href", "admin.html").text("Admin panel")
)
</script>";
}
return $result;

然后运行它。当用户重定向到网站时,我会再做一次检查。

最佳答案

相反,考虑结构化响应

虽然您要求的是可行的,但有更好的方法来处理这个问题。考虑改为返回一个数组,其中包含使用客户端脚本构建链接所需的数据。构建 Ajax 以相应地调用添加这些链接。您可以进一步扩展它以包含更多可配置对象,或者构建要附加的 html 并返回它,而不是尝试运行 javascript eval

function updateNav(links) {
links.forEach(function(link){
$li = $('<li></li>');
$a = $('<a></a>');
$a.prop('href',link['uri']);
$a.html(link['text']);
$li.append($a);

$('#nav').append($li);
});
}

var dummyData = {
navLinks: [
{
uri: 'http://stackoverflow.com',
text: 'StackOverflow'
},
{
uri: 'http://google.com',
text: 'Google'
}
]
};

var dummyHtml = {
navHtml: '<ol><li><a href="http://meta.stackoverflow.com">Meta StackOverflow</a></li></ol>'
};

function ajaxSimData() {
var someAjaxObject = {};
someAjaxObject.success = function(data) {
updateNav(data['navLinks']);
};

someAjaxObject.success(dummyData);
}

function ajaxSimHtml() {
var someAjaxObject = {};
someAjaxObject.success = function(data) {
$('#nav').after(data['navHtml']);
};

someAjaxObject.success(dummyHtml);
}

$('.ajaxTriggerData').click(ajaxSimData);
$('.ajaxTriggerHtml').click(ajaxSimHtml);
<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.6.4/jquery.js"></script>

<div id="message">
Simple Examples:<br>
<button class="ajaxTriggerData">Populate Nav from Data</button><br>
<button class="ajaxTriggerHtml">Load HTML string after Nav</button><br>
</div>
<div id="body">
<h3>Some navigation elements: </h3>
<ul id="nav">
<li><a href="#">Nav1</a></li>
<li><a href="#">Nav2</a></li>
<li><a href="#">Nav3</a></li>
</ul>
</div>

PHP 端生成响应

$isAdmin = $conn->prepare("SELECT role FROM users WHERE username = :username");
$isAdmin->bindParam(":username", $username);
$isAdmin->execute();

$navLinks = [];
if($isAdmin->fetch(PDO::FETCH_ASSOC)) {
$navLinks = [
['uri' => 'admin.html', 'text' => 'Admin panel'],
];
}

return json_encode([
'navLinks' => $navLinks
]);

关于javascript - 是否可以通过 ajax 从 php 返回 javascript 函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46895032/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com