2010-05-24 111 views
2

嘿傢伙,這可能真的很愚蠢,但希望有人可以提供幫助。我試圖使用ajax發佈到外部腳本,所以我可以發送數據,但由於某種原因,我的數據沒有將其發送到腳本。阿賈克斯發佈失敗的asp

$(document).ready(function() { 
$("#submitContactForm").click(function() { 
    $('#loading').append('<img src="http://www.xxxxxxxx.com/demo/copyshop/images/loading.gif" alt="Currently Loading" id="loadingComment" />'); 
     var name = $('#name').val(); 
     var email = $('#email').val(); 
     var comment = $('#comment').val(); 
     var dataString = 'name='+ name + '&email=' + email + '&comment=' + comment; 

     $.ajax({ 
      url: 'http://www.xxxxx.com/demo/copyshop/php/sendmail.php', 
      type: 'POST', 
      data: '?name=Dave&[email protected]&comment=hiiii', 
      success: function(result) { 
       $('#loading').append('success'); 
       } 
      });  

    return false; 
}); 
}); 

php腳本是簡單的(現在 - 只是想確保它的工作)

<?php 
$name = $_POST['name']; 
$email = $_POST['email']; 
$comment = $_POST['comment']; 

$to = '[email protected]'; 
$subject = 'New Contact Inquiry'; 
$message = $comment; 

mail($to, $subject, $message); 
?> 

的jQuery是嵌入在.aspx頁(語言我不熟悉)但張貼到一個PHP腳本。我正常收到電子郵件,但裏面沒有數據。我錯過了什麼?我試圖繞過此示例中的變量,但它仍然沒有

感謝

+0

如果您嗅探使用fiddler或httpfox發送的流量,數據是否存在?並刪除'?'在數據領域 - 它不應該在那裏。 – 2010-05-24 19:40:36

+0

另外,您可以驗證兩個腳本是否在同一個域上運行?有些人明顯地解釋了域名中x的不同數目,意味着不同的域。 – 2010-05-24 19:46:44

+0

處理腳本位於與jQuery代碼不同的域 – 2010-05-24 19:50:32

回答

1

除非瀏覽器和目標地址都支持CORS,否則無法使用Ajax與不在same origin中的站點對話,因爲腳本正在運行。你可以使用JSONP來解決這個問題,但真正的CORS是這方面的未來。

+0

你有什麼建議來解決這個問題嗎? – 2010-05-24 19:28:09

+0

誰說了關於不同領域的任何事情? – 2010-05-24 19:39:21

+0

處理腳本在另一個域上。 – 2010-05-24 19:44:34

0

工作,則不能使用AJAX發送到不同的域的請求。

+0

我擔心這種情況......有沒有其他方法可以做到這一點? – 2010-05-24 19:14:29

+0

您可以在您的域中創建一個將請求轉發到其他域的代理腳本。 – SLaks 2010-05-24 19:32:21

+0

你能告訴我更多關於你的選項的消息嗎? – 2010-05-24 19:45:58

0

刪除'?'來自你的數據的字符。我猜這是搞亂了PHP中的數據解析。

發佈數據時應使用encodeURIComponent進行編碼,這將編碼爲?%3F