因此我尝试发布并链接到动态网址并使用jquery重定向来执行此操作。我知道这可能不是最好的方式,我个人讨厌被重定向,但它确实有效。无论如何,我无法将动态URL传递到jquery帖子表单中,该动态URL是基于单击任何标记的数据库值生成的。现在,它带来了数据库中最后一个标记的名称和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();
});
感谢您的帮助。非常感谢。
答案 0 :(得分:1)
你的javascript代码中的for循环将把url变量设置为markers数组中的最后一个标记,正如你已经注意到的那样。你似乎已经切断了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
});