2011-08-19 94 views
0

首先愛這個資源 - 一直在使用它和學習一兩年了。這是我的第一篇文章,因爲我真的被卡住了。我通過ajax/jsonp提交表單。如果我在本地運行這個腳本 - 我用成功代碼從域中獲得迴應。如果我只是在瀏覽器中運行請求,它會給我回應成功代碼。但是當我提交表單時--Firebug給我一個紅色的200 OK,服務器沒有響應。 Safari讓我無法加載資源:取消。無法找到關於錯誤的很多文檔,所以我停下了腳步。我知道這可能是非常令人厭惡的專業人士閱讀,但這是我的第一篇文章,所以任何指導表示讚賞!在線有兩個示例:http://www.yourlifeportal.com/register.php其中包含reCaptcha的版本。 http://www.yourlifeportal.com/registerNew.php沒有reCaptcha只是添加了驗證碼,影響了我的代碼。如果我只是需要臉上的一點點,讓我也知道。謝謝!ajax jsonp請求 - 沒有回覆

$.ajax({ 
     url: 'http://myURLonaDifferentDomain', 
     data:jQuery(frm).serialize(), 
     type: 'POST', 
     dataType: 'jsonp', 
     jsonp: 'jsonp', 
     crossDomain: true, 
     error: function (xmlHttpRequest, textStatus, errorThrown) { 
        if(xmlHttpRequest.readyState == 0 || xmlHttpRequest.status == 0) 
      return; // it's not really an error 
    else 
       alert(xmlHttpRequest + ': ' + textStatus + ': ' + errorThrown); 
        }, 
     success: function(jsonp) { 
      // Response handling code goes here 
      console.log(json.response.responseCode + ': ' + json.response.response + ': ' + json.response.responseDescription); 

      if (json.response.responseCode == 10527) { 
      document.getElementById('errorScreen').style.display='block'; 
      $('#errorMsg').append('There was an error with your credit card transaction please go back and re-check your '); 

      } 
        if (json.response.responseDescription == "Registration was successful") { 

      window.location.replace("http://www.url.com/thankyou.php");    
      } 

     } 
         }); 


} 

回答

0

哈哈哈。跨域腳本。這是一個大問題。閱讀有關解決方案here

編輯我重新閱讀了這個問題,並注意到您已經準備好了跨域的AJAX(儘管它通常會自行注意到);這個問題幾乎可以肯定你沒有準備好遠程Web服務器。使用Firebug,打開Net選項卡,並查看特徵CORS頭的Response頭。

+0

我以爲jsonP是跨域問題的解決方案嗎? –

+0

這是Firebug爲響應標題顯示的內容。我缺少的東西嗎?日期\t孫,2011年8月21日7點15分五十秒GMT 服務器\t的Apache/2.2.8(CentOS的) 內容語言\t的en-US 的Content-Length 連接\t接近 內容 - 鍵入\t application/x-javascript; charset = UTF-8 –

+0

是的,沒有CORS頭文件(它看起來像'Access-Control-Allow-Origin')。你可以看到請求是否看起來像一個JSOP請求(在GET中會有一個參數,如'jsonp = xyz'),如果響應是正確的(它將以'xyz(...')開始) – Malvolio