2012-06-02 54 views
0

我需要將URL傳遞給JavaScript函數,如下所示。將URL字符串傳遞給Javascript函數

<script type="text/javascript" language="javascript"> 

var xmlhttp=''; 
function ajax() 
{ 
    if(window.XMLHttpRequest) 
    { 
     xmlhttp=new XMLHttpRequest(); 
    } 
    else 
    { 
     xmlhttp = new ActivexObject("Microsoft.XMLHTTP"); 
    } 
}  

function someFunction(orders_per_page, url) 
{ 
    ajax(); 
    var val=document.getElementById("txt_order_amount").value; 
    xmlhttp.onreadystatechange=function() 
    { 
      if(xmlhttp.readyState==4 && xmlhttp.status==200) 
      {     
       document.getElementById("list").innerHTML=xmlhttp.responseText; 
      } 
    } 

    xmlhttp.open("GET",url, true); 
    xmlhttp.send();   
} 
</script> 

<select 
    id="cmb_page" name="cmb_page" 
    onchange="someFunction(this.value, "reports/OrderAmount.php?val="+val+"&orders_per_page="+orders_per_page+"&pageNo="+getSelectedPage();"> 

    <option value="1">Some Value</option> 
</select> 

我需要在onchange甚至<select><option></option></select>元素的提到通過一個URL字符串。可能嗎?

+1

這是可能的。我一見鍾情就找不到任何錯誤。它有什麼問題?確保定義了'val'和'orders_per_page'變量,並且'getSelectedPage()'返回一個有效值。 –

回答

1

試試這個

onchange="someFunction(this.value, 'reports/OrderAmount.php?val='+val+'&orders_per_page='+orders_per_page+'&pageNo='+getSelectedPage());" 

注:我已經取代雙引號與單引號

+0

已經嘗試過。它不工作。 Internet Explorer只報告「*語法錯誤。*」 – Tiny

+0

它工作,如果這些變量設置在正確的地方 - 我只是測試它。在下面檢查我的意見 – codingbiz

1

您也可以破壞你的代碼一點點地防止儘可能多的標籤湯。

我假設你val變量被定義並在全球範圍內:

onchange="someFunction(this.value)" 

function someFunction(orders_per_page) { 
    var url = "reports/OrderAmount.php?val="+val+"&orders_per_page="+orders_per_page+"&pageNo="+getSelectedPage(); 
    ajax(); // ... rest of your function 

確保getSelectedPage()返回一個string,或可解析爲字符串的數字。

+0

不,我需要通過此函數只傳遞此網址'onchange =「someFunction(this.value)」'作爲一個參數。你提到的工作正常。 – Tiny

+0

在我上面的代碼中,我定義了函數內部的'url'。我不知道'val' var或'getSelectedPage()'函數在哪裏,或者它們具有或返回的值是什麼,但上面的示例基本上與HTML中定義的「url」相同。試試看看是否會出現語法錯誤:) –

+0

或者你的意思是,你有另一個函數調用傳遞一個完全不同的'url'?如果出現這種情況,我可以查看代碼,但如果@tunmise fasipe的回答沒有解決您的問題,那麼更有可能是其他情況會破壞您的代碼。 –