2014-03-13 172 views
1

我有點困惑在這裏,我想發佈的數據使用下面的代碼我的節點JS服務器:jQuery的不AJAX POST請求發送JSON

$.ajax({type:'POST', 
     url:'/map', 
     data:'type=line&geometry='+str, 
     success:function(msg) 
     { 
      console.log(msg); 
     }, 
     datatype:'json'  
    }); 

這是這裏的結果:

{ type: 'line', geometry: 'b~cqCge{b[mv|[email protected]' } 

這不是JSON.I此前曾試圖用contentType和做到這一點是這樣的:

​​

即使這個發送而沒有任何change.I數據已使用的數據串從第一one.I也曾嘗試與所述碼塊的方法的沿設定processDatafalse也嘗試了上述方法。

,該數據是JSON和使用AJAX因爲我想insert into mongodb from node js using mongojs and it fails

+0

嗯,我打賭'str'實際上是一個對象,因爲這種嘗試發送GeoJSON類型數據的氣味。這裏有很多回應,但我會尋找能夠從對象中產生JSON字符串的東西。只是爲了幫助清除正確的一個。並在那裏保留「contentType」。你的服務器可能不在乎,但是它應該**。 –

+0

@NeilLunn str是一個通過使用'google.maps.Geometry.encodePath'獲得的字符串,它返回一個'String' – vamsiampolu

回答

5

其實dataType無關與輸入而輸出。

相反,你想要的是字符串化的輸入data然後發送下來作爲一個變量來後端,然後可以對其進行解碼:

$.ajax({type:'POST', 
    url:'/map', 
    data: {data: JSON.stringify({type: 'line', geometry: str})}, 
    success:function(msg) 
    { 
     console.log(msg); 
    }, 
    dataType:'json'  
}); 

在後端這樣,你剛剛解碼data它應該現在是來自JSON的完全功能對象。

注意您將需要爲這個JSON類,JQuery的不包括這種能力默認:https://github.com/douglascrockford/JSON-js

+0

正在添加'charset:'utf-8' nessecary ?? – vamsiampolu

+0

@ user2309862我從來沒有這樣做,我會說,除非真的需要,否則 – Sammaye

+0

downvote的原因? – Sammaye

0

與此

$.ajax({ type: 'POST', 
     url: '/map', 
     data: {type:"line",geometry : str}, 
     success: function (msg) { 
      console.log(msg); 
     }, 
     dataType: 'json' 
    }); 

像@Rohan庫馬爾嘗試提到,與dataType

更換 datatype這對我很重要
+0

您的代碼有錯誤,您在'data:{...}之後錯過了'''' –

1

使用dataType代替datatypeTType像資本,

dataType:'json', 

試試這個,

$.ajax({ 
    type:'POST', 
    url:'/map', 
    data:{type:'line',geometry:str}, 
    dataType:'json',// use dataType not datatype 
    success:function(msg) { 
     console.log(msg); 
    }  
}); 

jquery.ajax()

1
Url = "http://example.com"; 

var postData = $('#selectorid').serialize(); 

    $.ajax({ 
      type: 'POST', 
      data: postData+'&FormType=InsertForm', 
      url: Url, 
      success: function(data){ 
        //console.log(data); 
      }, 
      error: function(){ 
       //console.log(data); 
       alert('There was an error in register form'); 
      } 
      }); 

帖子在PHP中的所有值。 請嘗試。

1

我面臨同樣的問題,以及API的NodeJS後端正在接受Undefined request.body。

我如何能夠通過調用AJAX如下解決:

$.ajax({ 
    url: serviceURL, 
    data: JSON.stringify(jsonData), 
    dataType: 'json', 
    type: 'POST', 
    contentType: 'application/json', 
    success: response => console.log(response), 
    error: e => console.log(e) 
}); 

請注意,我不得不提到兩個contentType: 'application/json'dataType: 'json'。另外請注意,有效負載JSON數據需要JSON.stringify -ing。

+0

這是解決我的問題,所以我upvoted它。我必須把它放在這個順序中,並且包含內容類型,因爲它不適用於它。謝謝!!! – lopezdp