2011-07-22 76 views
-1

好吧,由於AJAX絕對是一個薄弱環節,所以我在我的頭上。我有一個頁面需要通過ajax發送註冊表單到另一個域進行處理,然後返回一個成功/失敗消息。阿賈克斯表格發送

使用下面的代碼時,頁面只是刷新,沒有發送?

表格代號:

<form method="post" onSubmit="return submitGetApp();" class="kinkast_signup"> 
    <input id="login_email" type="text" name="to" /> 
    <input id="signInButtonSubmit" type="submit" name="action" value="Send" /> 
</form> 

jQuery代碼: $( '#signInButtonSubmit')點擊(函數(E){

//Get the data from all the fields 
    var number = $('input[name=to]'); 

    //Simple validation to make sure user entered something 
    //If error found, add hightlight class to the text field 
    if (number.val()=='') { 
     name.addClass('hightlight'); 
     return false; 
    } else name.removeClass('hightlight'); 

    //organize the data properly 
    var data = 'number=' + number.val(); 

    //show the loading sign 
    $('p.ajax_message').hide(); 

    //start the ajax 
    $.ajax({ 
     //this is the php file that processes the data and send mail 
     url: "http://video.kinkast.com/getapp", 

     //GET method is used 
     type: "POST", 

     //pass the data   
     data: data,  

     //Do not cache the page 
     cache: false, 

     //success 
     success: function() {    
      $('p.ajax_message').html('Success!'); 
      alert('Worked!');      

      }, 

     //Failure 
     error: function(xhr, status, e) { 
      alert(status, e); 
     } 

    }); 

    //cancel the submit button default behaviours 
    return false; 
}); 

有人可以檢查出的代碼,看看我'm missing?另外,要看到它的實況,請訪問this link

回答

0

你不能做ajax帖子到另一個域

這是爲了幫助防止諸如跨站腳本攻擊(XSS攻擊)之類的事情。

有框架可以讓你做這樣的事情,如ACD然而在大多數情況下,我不會推薦這種做法。

UPDATE

這是你的代碼的工作版本:http://jsfiddle.net/4tMN3/

你會注意到一些新的東西。

首先,我使用propper jQuery事件機制附加事件。

$('#mySubmitForm').submit(function(event){}) 

這比在實際表單中對事件進行硬編碼要優先得多。

其次,你會發現使用:

event.preventDefault(); 

這是propper jQuery的辦法,以防止形式(即提交)的默認行爲,而不是返回false。

+0

甚至不使用JSON?銘記我零exp。與ajax/json :) - 道歉愚蠢的問題 –

+0

此外,我不應該然後得到一個錯誤消息(使用上面的代碼)而不是頁面刷新? –

+0

無論返回哪種類型,都不能進行這樣的跨站點請求。如果你四處搜尋,你會找到解決辦法,但就像我說的那樣,限制在那裏是有原因的。 –

0

有一些方法可以通過jquery使用插件創建跨域json請求。它使用YQL作爲json請求返回頁面轉儲。它不是真的推薦,但如果你真的需要你可以。這裏有一個鏈接,這裏有一個關於他的github最新版本的鏈接。我最近使用它進行了一些測試,並且它都運行得很好,我立即得到了一個JSFiddle。

http://james.padolsey.com/javascript/cross-domain-requests-with-jquery/

還有一個頁面覆蓋通過YQL發佈: http://www.wait-till-i.com/2009/11/16/using-yql-to-read-html-from-a-document-that-requires-post-data/

例的jsfiddle: http://jsfiddle.net/M6X6n/1/

+0

嗨亨利,謝謝你的回答 - 我真的很感激它。 –

+0

我錯過了我原來的帖子的主要鏈接,抱歉! – Henry