我有一个JQuery脚本,可以在按钮点击时动态生成HTML元素。
我使用PDO和PHP连接到mysql数据库,但我想知道如何直接从PHP直接在外部JS文件中定位动态生成的变量。
我尝试过使用AJAX但据我所知它似乎只从PHP页面获取数据而不是相反。
JQuery代码就是这样......
//我想在查找表中使用索引来填充select元素
$("#main").append('<select><option value=""></option></select>');
我以这种方式尝试了AJAX
function getData(dataToPass)
{
$.ajax({
type: "POST",
url: "getData.php",
data: dataToPass,
success: function (returnedData)
{
$("#main").html(returnedData);
}
});
}
但你不能以这种方式传递变量吗?
我是PHP和JQuery的新手,非常感谢帮助。
答案 0 :(得分:1)
首先,PHP与JavaScript无关。它们是完全不同的语言,在它们自己的独立域中。如果你愿意,他们会合作。 PHP可以生成JavaScript代码,然后在客户端浏览器上运行。客户端浏览器不知道正在运行的JavaScript代码是由PHP生成的。 PHP也不知道如何使用浏览器。 PHP甚至不了解HTML。
因此,您无法将PHP传递给复杂的JavaScript对象,就像您无法将对象从PHP传递给JavaScript一样。但是,您可以传递值和数据结构(数组,数据对象)。
在这种情况下,您可以通过运行
在JavaScript中获取jQuery对象的内部HTML代码dataToPass = {html: $("#main").html()}; //it will be a string
或构建一个只包含所需数据的对象,例如:
dataToPass = {elements: [
{node: "select", options: [{node: "option", value: ""}]},
{node: "input", value: "someValue", type: "text"},
]};
当你有这个JavaScript时,它会通过你已经拥有的脚本将这些数据发送到服务器。在服务器端,您将必须截取$_POST
超全局,并要求HTML字符串,如果您选择第一个示例,则为$_POST['html']
,或者通过{{1访问元素数组如果你使用了第二个例子。