2011-06-13 34 views
0

我的代碼這一部分,我認爲這個問題是:阿賈克斯發送第一空白數據

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js" type="text/javascript"></script> 
<script type = "text/javascript"> 

matches = google.contentmatch.getContentMatches(); 
    $(document).ready(function() 
    { 
     var messageid 
     for(var match in matches) 
     { 
      for(var key in matches[match]) 
      { 
       if(key == 'message_id') 
       { 
        messageid = matches[match][key]; 
       } 

      } 
     } 




     var name = "Email Test"; 
     var url = 'https://mail.google.com/mail/u/0/#all/' + messageid; 
     var encodedurl = encodeURIComponent(url); 
     var dataValues = "name=" + name + "&url=" + encodedurl; 
     $('#crmbtn').click(function(){ 
      $.ajax({ 
       type: 'GET', 
       data: dataValues, 
       url: 'http://someurl', 
       success: function(){ 
        alert('Sent To CRM') 
       } 
      }); 
      return false; 
     }); 
    }); 
gadgets.window.adjustHeight(50); 
</script> 

    <form id="myForm"> 
     <input type='button' name='submit' id='crmbtn' value='Send To CRM' /> 
    </form> 

的問題是,我的代碼做什麼,我想要它做的,而是一次送我的資料它首先發送空白數據到我的其他php頁面,然後發送正確的數據。我猜測它是我編碼我的ajax函數的方式。

+0

我們能否看到更多的代碼?目前我看不出有什麼可能是錯的。 – Alex 2011-06-13 16:33:20

+0

是的,肯定給我一下。 – Novazero 2011-06-13 16:34:21

+0

總是使用分號結束語句,並且在迭代對象時總是檢查'hasOwnProperty'。 – 2011-06-13 16:39:20

回答

1

您需要encodeURIComponentname參數,以及:

var name = encodeURIComponent("Email Test"); 
… 
var dataValues = "name=" + name + "&url=" + encodedurl; 

而且,最好是該事件綁定到你的表單的submit處理器和防止動作,如:

<form id="myForm"> 
    <input type='submit' name='submit' id='crmbtn' value='Send To CRM' /> 
</form> 

(將type更改爲submit)和

$('#myForm').submit(function(){ … 

而且當你遍歷對象,經常檢查hasOwnProperty

for(var match in matches) 
{ 
    if (matches.hasOwnProperty(match)) { 
     … 
+0

好吧,它看起來像它工作:)感謝的人。 – Novazero 2011-06-13 17:00:48

1

這只是胡亂猜測(我需要看到更多的代碼...),但如果#crmbtn是鏈接,你需要改變:

$('#crmbtn').click(function(){ 

到:

$('#crmbtn').click(function(event){ 
    event.preventDefault(); 

要防止打開鏈接的頁面。

編輯:根據您的更新,我認爲這是問題所在,您可能會提交表單並且沒有action屬性,表單會自動提交。

+0

您的回答已被OP的添加所淘汰。 ;)此外,jQuery規範'返回false',所以你的更正沒有必要。 – 2011-06-13 16:41:12

+0

@Marcel Korpel我注意到並更新了,它畢竟似乎是問題。 – jeroen 2011-06-13 16:41:52

+0

不,按鈕的默認類型不是'submit'。而且,它是一個帶有* type *按鈕的'input'元素,只有在提交時它纔會默認提交表單。 – 2011-06-13 16:43:18