2012-07-30 121 views
2

我創建了一個簡單的表單,其中我有一個組合框,當我選擇任何東西時,我將一個函數onchange事件放在它的調用中。jquery不在IE中發佈數據

然後我通過jQuery的一個輔助性文件發送這個數據

<script type="text/javascript"> 
$.noConflict(); 
function Searchwine(obj,str) { 
{queryString: ""+str+""}, function(data){   
    jQuery.post("http://www.site.com/search/helper/autosuggest.php", {queryString: ""+str+""}, function(data){   
     if(data.length >0) { 
jQuery('#windatano').html(data); 
} 
</script> 

我在使用中自動提示後數據這個代碼通過的jQuery JavaScript和打印重播windatano id

- >它在crome和ff以及其他所有瀏覽器中都能正常工作,但是在IE中它不起作用

可以有幫助嗎? 謝謝,

+0

我希望你明白,'「」 + STR +「」'是連接兩個空字符串到'str'變量...在換句話說,什麼都不做,簡單的'.toString()'不會做。 – TheZ 2012-07-30 18:46:06

+0

任何機會,這個請求是跨域還是在同一個域內? – 2012-07-30 18:46:42

+1

這是什麼? 'function Searchwine(obj,str){{queryString:「」+ str +「」},function(data){'?!?!?!? – Ohgodwhy 2012-07-30 18:47:44

回答

1

您正在使用jQuery不當。

正確的語法是(對於POST)

$.post([URL], { 
     var: value, 
     var2: value 
    }, function(data) { 
     //callback goes here 
    } 
); 

如果你想查詢字符串中傳遞,就好像它是一個GET,只需將其附加到URL中的?之後。

例如爲:

"http://www.site.com/search/helper/autosuggest.php?" + str 
1

IE不支持跨域AJAX調用,如果不管它的getJSON與否。瞭解到困難的方式......我最終添加了一個使用curl獲取結果並將它們返回給腳本的本地php文件,它是使得跨域請求工作的唯一方法。

0

你不能這樣做跨域Ajax請求,如果請求的URL是另一個域中,這個失敗,如果域是一樣的,使用相對路徑:

jQuery.post("/search/helper/autosuggest.php".... 

如果需要跨域ajax請求,你必須使用jsonp(http://api.jquery.com/jQuery.getJSON/#jsonp)

如果你使用post方法,queryString定義了一個get vars,你需要使用data選項

jQuery.ajax({ 
    url: '/search/helper/autosuggest.php', 
    type: 'POST', 
    data: data, 
    sucess: function (data) { 
     if (data) jQuery('#windatano').html(data); 
    } 
}); 

當數據可以是對象格式:

var data = { 
    a_var = 'value', 
    other_var: 'other value' 
}; 

對不起我的英語