javascript - 将动态变量传递到jquery语句中

标签 javascript php jquery

所以我尝试发布并链接到动态 URL,并使用 jquery 重定向来执行此操作。我知道这可能不是最好的方法,而且我个人讨厌被重定向,但它确实有效。无论如何,我在将动态 url(根据单击的任何标记的数据库值生成)传递到 jquery post 表单时遇到问题。现在,它引入了数据库中最后一个标记的名称和 ID 的最后一个值,这对我来说很有意义,但肯定不是我想要发生的情况。

这是我的 JavaScript 代码:

downloadUrl("phpsqlajax_genxml1.php", function (data) {
var xml = data.responseXML;
var markers = xml.documentElement.getElementsByTagName("marker");
for (var i = 0; i < markers.length; i++) {
    var id = markers[i].getAttribute("id");
    var name = markers[i].getAttribute("name");
    var description1 = markers[i].getAttribute("description");
    var type = markers[i].getAttribute("type");
    var point = new google.maps.LatLng(
            parseFloat(markers[i].getAttribute("lat")),
            parseFloat(markers[i].getAttribute("lng")));
    var url = "markerpages.php?name=" + name + "&id=" + id;
    var html = "<b>" + name + "</b> <br/>" + description1;
    var contentString = '<div id="content">' +
            '<div id="siteNotice">' +
            '</div>' +
            '<h1 id="firstHeading" class="firstHeading">' + name + '</h1>' +
            '<div id="bodyContent">' +
            '<p>' + description1 + '</p>' + 
            '<p><a href="#" id="markerpages-link">link to dynamic PHP page</a>' +
            '</p>' +
            '</div>' +
            '</div>';  

这是我的 jquery 代码:

$(document).on("click", "a", "markerpages-link", function () {
        var form = $('<form action="' + url + '" method="post">' +
                '<input type="hidden" name="api_url" value="' + url + '" />' +
                '<input type="text" name="description2" value="' + description1 + '" />' +
                '</form>');
        $('body').append(form);  // This line is not necessary, maybe for IE
        $(form).submit();
    });

感谢您提供的所有帮助。非常感谢。

最佳答案

正如您所注意到的,JavaScript 代码中的 for 循环会将 url 变量设置为标记数组中的最后一个标记。您似乎已经切断了 for 循环的最后一部分,所以我不确定您对设置的变量还做了什么,但我假设您以某种方式将它们添加到 DOM 中。

最好的办法是将一些值设置为 DOM 元素本身的属性,并为单击提供一个事件处理程序来查找这些值并相应地执行适当的 POST 提交。

这是一个例子...

添加 DOM 元素时,将其 href 属性指定为该标记的 url。

那么你的事件处理程序可以是这样的:

$('a.markerpages-link').click(function(el){
    var form = $('<form action="' + el.attr('href') + '" method="post">' +
        '<input type="hidden" name="api_url" value="' + url + '" />' +
        '<input type="text" name="description2" value="' + description1 + '" />' +
        '</form>');
    $('body').append(form);  // This line is not necessary, maybe for IE
    $(form).submit();
    return false; // so that the link is not followed as it normally would
});

关于javascript - 将动态变量传递到jquery语句中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26447827/

相关文章:

javascript - ReactJS + 终极版 : How to structure action creators down to each component?

php - 拆分 PHP 数组并存储在 MySQL 中

php练习

javascript - 如何使用外部 jQuery 文件操作导入的 HTML 文件?

jquery - 处理 jquery ui 对话框中表单中的错误

javascript - 在 offcanvas 中禁用主体滚动( Bootstrap )

javascript - 模板切换 View 的集合。 Backbone .js

javascript - 使用 JavaScript 将数据、类和样式添加到 HTML

javascript - 从 GUID 创建 ActiveXObject

java - android将视频文件(mp4)发送到php服务器