2011-09-03 39 views
0

我的項目是PHP/MySQL。我正在使用Smarty作爲模板引擎。jQuery .change加載不同的.php文件

我在智者文件< select>標籤:

maps.tpl -

<script src="http://code.jquery.com/jquery-1.5.js"></script> 
    <form method="post" action="maps.php"> 

     <td colspan="3"> 

      <select id="cmdview" name="cmd"> 
       <option value=""></option> 
       <option value="commdata" {if $cmdOn == "commdata"}selected="true"{/if}>Communications</option> 
       <option value="contacts" {if $cmdOn == "contacts"}selected="true"{/if}>Contacts</option> 
       <option value="enrollment" {if $cmdOn == "enrollment"}selected="true"{/if}>Enrollment</option> 
       <option value="all" {if $cmdOn == "all"}selected="true"{/if}>All Schools</option> 
      </select> 

      <input type="submit" name="doSwitch" value="Submit" /> 

     </td> 

     <div id="append"></div2> 

    </form> 

到目前爲止,我的jQuery代碼發現其價值選擇:

{literal} 

<script> 
$('#cmdview').change(function() { 
    //alert('Handler for .change() called.'); 
     var str = ""; 
     url = "maps_append.php"; 

     $("select option:selected").each(function() { 
      str += $(this).text() + " "; 
      }); 
     $('#append').text(str); 
      }) 
      .change(); 
</script> 
{/literal} 

我需要jQuery來監聽「cmdview」的值,然後將該值發佈到文件:maps_append.php。我需要該文件.append /。更改當前文件(maps.php/maps.tpl)而不重新加載。

但是,我的jQuery只有一半工作。 jQuery的確找到了我想要傳遞的值,並且我已經知道它在ID爲#append的< .d.i.v。>標記中加載了正確的值。我似乎無法做的唯一的事情就是取值,實際上它張貼到maps_append.php

任何幫助將非常感激!

謝謝!

PS:我覺得變化將是這樣的:

這需要更換:

$('#append').text(str); 
     }) 
     .change(); 

像這樣的東西:

url = "maps_append.php"; 
    $.post(url, { cmd: cmdview, value: str } , 
     function(data) { 
      var content = $(data); 

      $("#result").append(content); 
     } 
    ); 
    $term_input.val(''); 
}); 

編輯::

我當前的文件是maps.php。我現在已經將其追加maps_append.php使用此代碼maps.php:

<script> 
$('#cmdview').change(function() { 
    //alert('Handler for .change() called.'); 
     var str = ""; 
      url = "maps_append.php"; 
     url = "maps_append.php"; 

     $("select option:selected").each(function() { 
      str += $(this).text() + " "; 
      }); 
     $('#append').load(url); 
      }) 
      .change(); 
</script> 

我只需要現在張貼選擇變量的值!

建立更緊密還是......請參閱該編輯:

<script> 
    $('#cmdview').change(function() { 
     //alert('Handler for .change() called.'); 
      var str = ""; 
       url = "maps_append.php"; 
      $("select option:selected").each(function() { 
       str += $(this).text() + " "; 
       }); 
      $.post(url, { str: "$cmdOn" } , 
       function(data) { 
        var content = $(data); 
      $('#append').load(url); 
       }) 
       .change(); 

        }); 
    </script> 

現在maps_append.php頁面僅追加當我改變了選擇標籤的價值maps.php。我現在只需要在maps_append.php出現時包含select標籤的值。

回答

0

我不太明白你正在做什麼這裏的細節 - 所有的代碼看起來很好,但該計劃似乎有點陌生。

通常情況下,您沒有程序更改源。相反,您將代碼存儲數據存儲在數據庫中,代碼將由數據庫驅動以產生不同的輸出。

也許這就是你想要的內容做什麼 - 它存儲在數據庫中,並有一個顯示它的頁面。


要加載通過jQuery內容請使用以下

function loadContent(elementSelector, sourceUrl) { 
    $(""+elementSelector+"").load("http://yoursite.com/"+sourceURL+""); 
} 

請參閱此鏈接:http://frinity.blogspot.com/2008/06/load-remote-content-into-div-element.html

+0

上選擇什麼選項,標準追加到該頁面。如果「註冊」爲選定值,則會添加不同的表單輸入。如果選擇「聯繫人」,則會顯示另一個輸入。 「登記」被選中,數據需要被限制級別的大小。所以,我需要一個表單輸入w /一個整數 - 文本輸入將工作。 如果選擇「通信」值,我需要一個時間戳值。因此,我加載了一個日曆小程序,或者只有一個日期/月/年選擇.append頁面。 我需要更多的表單輸入出現,但什麼形式的輸入取決於用戶選擇什麼。 – Charlie

+0

您通常不會更改PHP頁面。記住不止一個用戶可以同時使用該頁面。使用AJAX完成此操作的典型方法是僅附加到當前的HTML。您也可以保存進度,因此如果用戶稍後回來,則可以正確構建頁面。在第二種情況下,你需要一個數據庫。 – Hogan

+0

保存當前用戶的進度以保留其搜索值是一件好事,但現在它不是主要問題。我實際上試圖做你說的話 - 附加到當前的HTML。我將另一個文件附加到當前文件。 maps.php是當前文件。選擇值將發佈到maps_append.php,而maps_append.php將附加到maps.php – Charlie