2011-12-07 68 views
1

我試圖提交一個表單到一個不是我自己的網站(salesforce.com與他們的網絡到主導功能),我通過JavaScript模式窗口來完成它。使用JavaScript的郵政表格

一旦基本上所有條目進行測試,並確保沒有錯誤,我用這個:

if(error_count == 0) { 
       $.ajax({ 
        type: "POST", 
        url: "[salesforce url]", 
        data: "first_name=" + first_name + "&last_name=" + last_name + "&email=" + email + "&firm=" + firm + "&[salesforceid]=" + AUM + "&[salesforceid]=" + custodian + "&[salesforceid]=" + custodian_other, 
        error: function() { 
         $('.error').hide(); 
         $('#sendError').slideDown('slow'); 
        }, 
        success: function() { 
         $('.error').hide(); 
         $('.success').slideDown('slow'); 
         $('form#callToAction').fadeOut('slow'); 
        }    
       }); 
      } 

如果測試的形式,而不使用JavaScript和URL的作品,所以我想也許這樣JavaScript處理的網址是問題?

問題:數據未成功提交給Salesforce。再次,常規的HTML表單工作,JavaScript不。所以我已經確定它是一個JavaScript問題。

+0

您在這裏有一個實際問題嗎?你在代碼中遇到什麼問題嗎? – deltaforce2

+0

對不起,只是在最後加上了問題。 – jwg2s

+2

我認爲你正試圖做一個跨域(salesforce)服務器的ajax調用......這是不可能的。 –

回答

2

除非接收服務器允許並且瀏覽器支持CORS,否則不能進行XHR跨域請求。但是,您可以做一個像這樣的盲目提交,它會取得成功:

var $form = $("<form>", { 
    method: "POST", 
    action: "[salesforce url]", 
    target: "my-iframe" 
}).appendTo("body"); 

var $iframe = $("<iframe>", { 
    name: "my-iframe" 
}).bind("load", function() { 
    $('.error').hide(); 
    $('.success').slideDown('slow'); 
    $('form#callToAction').fadeOut('slow'); 
    $iframe.remove(); 
    $form.remove(); 
}).appendTo("body"); 

$.each(("first_name=" + first_name + "&last_name=" + last_name + "&email=" + email + "&firm=" + firm + "&[salesforceid]=" + AUM + "&[salesforceid]=" + custodian + "&[salesforceid]=" + custodian_other).split("&")), function (index, value) { 
    var pair = value.split("="); 
    $form.append("<input>", { 
     type: "hidden", 
     name: pair[0], 
     value: pair[1] 
    }); 
}); 

$form.submit(); 
+0

謝謝,工作完美無瑕。 – jwg2s

1

吉姆·何塞+1。這種事情可能被解釋爲對用戶的XSS攻擊,所以瀏覽器很可能不會允許它。

您可以查看瀏覽器的錯誤日誌,看看您在嘗試運行腳本時是否存在安全錯誤。如果這樣做不起作用,請嘗試安裝像Firebug這樣的工具,看看它是否可以查明問題。

你也可以通過嘗試一種不同的方法簽名爲誤差函數,這樣提高你的錯誤處理:

error: function(jqXHR, textStatus, errorThrown) {...} 

這樣你可以檢查什麼錯誤的種類正在從Ajax調用拋出。

相關問題