2011-09-03 66 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