2011-09-03 35 views
0

我在尋求以前的威脅方面的幫助,並且這個建議讓我朝不同的方向發展。因此,線程死亡。我取得了很大的進步,我的回答非常接近。

我有兩個文件: 本地文件:maps.php 遠程文件:maps_append.php

maps.php具有形式選擇標籤。我需要jQuery來獲得的任何選項是選擇的價值,並與maps_append.php CMD =(值)加載遠程URL(maps_append.php)

我是什麼?

<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> 

這是我的HTML。我的jQuery是:

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

問題是我的$ _GET值(cmd)總是「str」。它不會採用我選擇的HTML的價值。我無法弄清楚它的語法以獲得更好的選擇價值。

所有我需要的是str = =值的任何<。選項 。 >被選中

編輯:: 我想補充一點,我知道$ .post是不需要的,現在我正在做一個_GET值。但是,我不知道該怎麼格式化這個... :(

回答

1

確保你有適當的縮進,要不然你會你已經清理了你的大部分代碼,你在你的url中拼寫「str」而不是連接變量:

<script> 
$('#cmdview').change(function() { 
    //alert('Handler for .change() called.'); 
    var str = '', 
     url = 'maps_append.php?cmd='; 
    $('select option:selected').each(function() { 
     str += $(this).text() + ' '; 
    }); 

    url += str; 

    $.post(url, { cmdview: str } , function(data) { 
     var content = $(data); 
     $('#append').load(url); 
    }).change(); 
}); 
</script> 

另請注意,您第一次做一個POST請求maps_append.php這將有兩個$_POST['cmdview']$_POST['cmd']設置爲您發送的選項,那麼一旦該腳本返回的響應,通過使用load()方法做一個GET請求,這將隨後替換#append的HTML。不知道爲什麼會出現在年底,去年change()

從我可以告訴,這聽起來更像是你試圖做更多的事情是這樣的:

<script> 
$('#cmdview').change(function() { 

    var url = 'maps_append.php?cmd=' + $(this).val(); 

    $.get(url, function(data){ 
     $('#append').append(data); 
    }); 
}); 
</script> 
+0

我也不確定。我剛剛通過了這個代碼的大量版本。這是我在做print_r($ _ GET)時最接近它的工作。如果我知道如何正確格式化,我可以擺脫$ .post – Charlie

+0

您是否看到我的備用解決方案?我想我已經在第二個解決方案中爲您解決了很多問題(但我也在假設它應該如何工作)。 – Andrew

+0

是的!安德魯,你真棒!我現在得到_GET數據!謝謝!! – Charlie

2

變化

url = "maps_append.php?cmd=str"; 

url = "maps_append.php?cmd=" + str; 
+0

我試過了。在maps.php中,我正在做print_r($ _ GET);.它說[cmd] => ....沒什麼。該值不被傳遞。 – Charlie

+0

由於某些原因,我不明白,str​​不是我的選擇選項的價值。 ( – Charlie

+0

)'str ='「'現在還爲時過早,你需要在'.post()'。'.post(」maps_append.php?cmd =「+ str,{cmdview :str},'。'str'也作爲變量'cmdview'傳遞,所以你可以通過'$ _POST ['cmdview']'在php中訪問它,並把它放在url上,只需要url (「)maps_append.php」' –

0

我相信,你正在試圖完成的任務可以用更簡單的代碼來解決。試着用這個替換現有的JavaScript:

$(function() { 
$('#cmdview').change(function() { 
    $('#append').load("maps_append.php?cmd=" + $(this).val()); 
}).change(); 
}); 

此代碼簡單地說,當你改變#cmdview加載文件maps_append.php?cmd=的內容與#cmdview附加到URL的值。這應該讓這樣你就可以在你的PHP代碼$_GET['cmd']訪問#cmdview值。