javascript
  • jquery
  • ajax
  • json
  • post
  • 2013-01-21 120 views 0 likes 
    0

    我在使用jQuery中的Ajax調用將JSON數據發佈到服務器時遇到問題,該功能不會進入成功模式。當我發佈使用Firefox的POSTER插件時,它會成功發佈。共享相同的代碼片段和截圖:將JSON數據發佈到服務器URL

    function showSubscribeContent() 
        { 
         alert("*1*------- SUB CLICKED"); 
    
         var myJSONData = '{"data":{"mode" : "subscribe","technologyareas":[1],"assettypes":["podcast","documents"]}}'; 
    
    
         alert("*2*------- POSTING--------->"+myJSONData); 
    
    
         $('#subscribePage').html('<h1>POSTING...</h1>'); 
    
         $.ajax({ 
          type: 'POST', 
          url: 'https://tt.s2.acc.com/tt/subscribe-service/uid=sagar_mate', 
          data: myJSONData, 
          dataType: 'application/xml', 
          success: function(data) { 
          alert("*3*------- POSTED SUCCESSFULLY TO THE SERVER"); 
    
          $('#subscribePage').html('<h1>POSTED</h1>'); 
    
          } // Success Function 
          }); // Ajax Call 
    } 
    

    我收到警報編號和但不。

    另外,當我發佈使用Firefox的POSTER插件時,它很容易發佈。

    enter image description here

    的響應成功。

    POSTER Plugin Snaps

    我無法使用AJAX調用後相同的數據。

    感謝, ANKIT

    +0

    檢查我的答案[here](http://stackoverflow.com/questions/14433212/how-to-call-rest-api-from-javascript/14433462#comment20094520_14433462) – Wolf

    +0

    檢查它的狼。 –

    +0

    我無法理解答案。請幫忙。 –

    回答

    0

    添加在beforeSend功能的標題爲我工作得很好。 CORS的安全原因。

    1

    除非和直到你的AJAX調用的URL是同一個域的,我不認爲它會被成功發佈。 Firefox的POSTER插件不會對域進行任何限制,但瀏覽器會將此限制放在應用程序上。

    嘗試檢查錯誤:函數(){(4)警告;}

    ,看它是否達到了錯誤處理程序ATLEAST

    +0

    都是相同的域。 tt.stage2 –

    +0

    @AnkitTanna所以,你的應用程序在同一個域https://techtime.stage2.accenture.com – gurvinder372

    +0

    我的應用程序發佈從應用程序準備的json數據。但該應用程序不在同一個域中。應用程序從域中獲取xml數據。 –

    1

    請clearify你想要什麼,用海報時,Firefox的你的插件已指定數據類型爲json,而在使用ajax時,您使用的是xml。

    如果您將數據發佈爲JSON,請使用JSON.stringify,它接受JSON對象並將其轉換爲字符串。

    +0

    JSON.stringigy最終會將數據轉換爲此字符串:var myJSONData = {「data」:{「mode」:「subscribe」,「technologyareas」:[1],「assettypes」:[「podcast」, 「文件」]}}; –

    1

    嘗試使用此代碼

    function showSubscribeContent() 
        { 
         alert("*1*------- SUB CLICKED"); 
         var myJSONData = {"data":{"mode" : "subscribe","technologyareas":[1],"assettypes":["podcast","documents"]}}; 
         alert("*2*------- POSTING--------->"+myJSONData); 
         $('#subscribePage').html('<h1>POSTING...</h1>'); 
    
         $.ajax({ 
          type: 'POST', 
          url: 'https://tt.s2.acc.com/tt/subscribe-service/uid=sagar_mate', 
          data: myJSONData, 
          dataType: 'application/json', 
          success: function(data) { 
          alert("*3*------- POSTED SUCCESSFULLY TO THE SERVER"); 
          $('#subscribePage').html('<h1>POSTED</h1>'); 
    
          } // Success Function 
          }); // Ajax Call 
    } 
    

    在這裏,我已經改變了以下幾行

    從字符串

    轉換myJSONData以JSON對象

    var myJSONData = {"data":{"mode" : "subscribe","technologyareas":[1],"assettypes":["podcast","documents"]}}; 
    

    注:嘗試用字符串(你這樣做的方式)如果這不適合你

    更改datatyle以JSON

    dataType: 'application/json', 
    
    +0

    你試過這個嗎? – Wolf

    +0

    我在控制檯出現這個錯誤:失敗{「readyState」:4,「responseText」:「」,「status」:406,「statusText」:「Not Acceptable」} 2013-01-22 17:41 :49.595 TT [812:13403] [INFO] textStatus:錯誤:不可接受 –

    +0

    我嘗試了您的建議。但它一次又一次地進入錯誤功能。 「dataType」表示服務器返回的數據類型。它的服務器返回的XML數據。 –

    相關問題