2014-10-19 94 views
0

所以我試圖發佈和鏈接到一個動態的URL,並使用jquery重定向來這樣做。我知道這可能不是最好的方式,我個人不喜歡被重定向,但它的工作原理。無論如何,我無法將基於數據庫值生成的動態url傳遞到jquery帖子表單中,而無論哪個標記被點擊。現在,它會在數據庫中的最後一個標記的名稱和ID中引入最後一個值,這對我來說很有意義,但肯定不是我想要發生的事情。傳遞動態變量到jquery語句

這裏是我的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(); 
    }); 

謝謝你的任何和所有幫助。非常感謝。

回答

1

您的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 
}); 
+0

這是有道理的。謝謝回覆。我會讓你知道它是怎麼回事。 – ambe5950 2014-10-19 07:41:13

+0

工作完美。再次感謝! – ambe5950 2014-10-19 07:50:16