Glad I could help. Regards Dirk
Am Mittwoch, 9. Januar 2013 04:26:07 UTC+1 schrieb [email protected]: > > Hello Crenshinibon > > Thanks for your response, now I had solved the problem > > it's really because the ie request is different from chrome or ff like you > said , it's because ie didn't send the option request first > > so now i use a buffer to receive all the data by the request even "data" , > now i can get all the post data~ > > thanks a lot~~~ > > Crenshinibon於 2013年1月8日星期二UTC+8下午5時00分38秒寫道: >> >> And one more thing. If you define "contentType" in your ajax request you >> have to add "Content-Type" to the responses "ACCESS_CONTROL_ALLOW_HEADERS". >> >> I think I did this in the example. >> >> regards >> Dirk >> >> Am Montag, 7. Januar 2013 17:38:39 UTC+1 schrieb Crenshinibon: >>> >>> I remember one additional thing. IE8 tends to fall apart if it is unable >>> to understand the charset defined in the Content-Type. Make sure you define >>> a valid one, e.g. "utf-8". >>> >>> Regards, >>> Dirk >>> >>> Am Montag, 7. Januar 2013 17:28:09 UTC+1 schrieb Crenshinibon: >>>> >>>> Hi, >>>> >>>> never heard of the AXON module. Like I said, the example above is from >>>> a current project which contacts a Java (actually: Xtend) backend. There, >>>> I >>>> use the "simpleframework" as a "server". No node.js. And I think it has >>>> nothing to do with it. >>>> >>>> I did the same with node.js and can't remember doing anything very >>>> special with it. To get cross site scripting working with IE8 (our >>>> corporate default web server, by the way) you have to stick to the >>>> following things, I am not sure if all are mandatory, though: >>>> >>>> - The server has to always respond with the >>>> ACCESS_CONTROL_ALLOW_HEADERS / ORIGIN / METHODS headers properly >>>> defined. >>>> The IE8 doesn't send a OPTIONS preliminary request. >>>> - Much depends on the dataType of the request. If you use "script" >>>> or "jsonp" you get through without any complaint. But jQuery always >>>> uses >>>> GET in this cases. >>>> - If you want or must use POST, DELETE, PUT, etc. methods. You have >>>> to set the dataType to "json". But than you have to define: >>>> "jQuery.support.cors=true" somewhere. And your clients get the annoying >>>> message I mentioned above. But only once per web page. >>>> >>>> Here is some working server code, using proper HTTP methods and the >>>> datatype "json": >>>> https://gist.github.com/4476236 >>>> >>>> and the client: >>>> https://gist.github.com/4476269 >>>> >>>> and the HTML file pulling everything together: >>>> https://gist.github.com/4476305 >>>> >>>> (IE8, jQuery 1.8.3, json2.js) >>>> >>>> Regards >>>> Dirk >>>> >>>> Am Montag, 7. Januar 2013 02:39:43 UTC+1 schrieb 曾漢煒: >>>>> >>>>> Hello Crenshinibon >>>>> >>>>> I try to rewrite the node.js to use the less module than i found my >>>>> ajax can work on ie9 >>>>> >>>>> but no I found another problem is the module named "AXON" the >>>>> message-oriented >>>>> socket library >>>>> >>>>> our team use this to push and pull the data, I think maybe this is the >>>>> problem because i just use express module it can work successfully >>>>> >>>>> so do you have use the AXON module and should i setting anything to >>>>> make sure the socket can get the ajax post data from ie9 ? >>>>> >>>>> Crenshinibon於 2013年1月4日星期五UTC+8下午7時59分01秒寫道: >>>>>> >>>>>> Hello, >>>>>> >>>>>> I actually had/have the same problem. It is not node.js at the >>>>>> backend, but getting the f***** IE 8 to send an ajax request to a >>>>>> different >>>>>> target is a mess, regardless of the receiver. >>>>>> >>>>>> Your response looks good, quite similar to mine. My jQuery.ajax looks >>>>>> like this: >>>>>> >>>>>> jQuery.ajax({ >>>>>> >>>>>> url: planview_bridge_host + 'order_number', >>>>>> >>>>>> dataType: 'json', >>>>>> >>>>>> data: "{\"code\": \"" + id + "\", \"order_number\": \"" + order >>>>>> + "\"}", >>>>>> >>>>>> headers: { >>>>>> >>>>>> x_auth_user: 'dirk', >>>>>> >>>>>> x_auth_password: 'password', >>>>>> >>>>>> x_method: 'DELETE' >>>>>> >>>>>> }, >>>>>> >>>>>> contentType: 'application/json; charset=UTF-8', >>>>>> >>>>>> type: 'POST', >>>>>> >>>>>> success: function(data) { >>>>>> >>>>>> if (data) { >>>>>> >>>>>> setToNein(); >>>>>> >>>>>> return updateOrderNumber('undef'); >>>>>> >>>>>> } else { >>>>>> >>>>>> return alert('Falsche Daten empfangen: ' + >>>>>> JSON.stringify(data)); >>>>>> >>>>>> } >>>>>> >>>>>> }, >>>>>> >>>>>> error: function(jqXHR, textStatus, e) { >>>>>> alert(JSON.stringify(jqXHR)); >>>>>> setToJa(); >>>>>> >>>>>> return alert('Verbindungsproblem: ' + JSON.stringify(e)); >>>>>> } >>>>>> }); >>>>>> (The JSON object is not present in IE8 by default, I added the >>>>>> json2.js by Crockford to the page) >>>>>> >>>>>> Actually I added: "jQuery.support.cors = true" in my client script. >>>>>> And read somewhere that some browsers are unable to send requests with >>>>>> methods other than POST and GET. So I reverted to POST everything and >>>>>> send >>>>>> the method really meant as a custom header field ("x_method"). >>>>>> >>>>>> It works despite the fact that when a user for the first time tries >>>>>> to send a request, he is asked if he truly want to send data to a >>>>>> different >>>>>> host. >>>>>> >>>>>> Hope it helps a little. >>>>>> >>>>>> Regards >>>>>> Dirk >>>>>> >>>>>> Am Freitag, 4. Januar 2013 03:48:43 UTC+1 schrieb [email protected]: >>>>>>> >>>>>>> Hello Jacob >>>>>>> >>>>>>> we have setting the response header like this >>>>>>> >>>>>>> app.all('*', function(req, res, next) { >>>>>>> res.header("Access-Control-Allow-Origin", "*"); >>>>>>> res.header("Access-Control-Allow-Headers", "X-Requested-With"); >>>>>>> >>>>>>> res.header("Access-Control-Allow-Methods","PUT,POST,GET,DELETE,OPTIONS"); >>>>>>> res.header("X-Powered-By",' 3.2.1') >>>>>>> res.header("Content-Type", "application/json;charset=utf-8"); >>>>>>> if(req.method==='OPTIONS') >>>>>>> res.send(200); >>>>>>> else >>>>>>> next(); >>>>>>> }); >>>>>>> >>>>>>> so is there anything we have to setting on node.js server? >>>>>>> >>>>>>> and how could i check the second request can be received >>>>>>> successfully? >>>>>>> >>>>>>> or did you have any ie ajax success sample can show me? because it >>>>>>> is really strange >>>>>>> >>>>>>> thanks a lot Jacob~ >>>>>>> >>>>>>> >>>>>>> Jacob於 2013年1月4日星期五UTC+8上午1時51分14秒寫道: >>>>>>>> >>>>>>>> When doing a cross domain POST, the browser usually send two HTTP >>>>>>>> requests. The first with HTTP method OPTIONS before sending the >>>>>>>> actual request. Your server has to flag the request as okay before the >>>>>>>> browser proceeds. >>>>>>>> >>>>>>>> Your server might be receiving the options request only, which >>>>>>>> would have no body. >>>>>>>> >>>>>>>> >>>>>>>> On Thu, Jan 3, 2013 at 8:03 AM, Tiger Nassau Inc < >>>>>>>> [email protected]> wrote: >>>>>>>> >>>>>>>>> You may have cors (cross origin) problems - its kind if tricky but >>>>>>>>> you probsbly need a header to allow - search on this >>>>>>>>> >>>>>>>>> Sent from my LG Mobile >>>>>>>>> >>>>>>>>> [email protected] wrote: >>>>>>>>> >>>>>>>>> >hello >>>>>>>>> > >>>>>>>>> >if we use chrome or firefox we can't successfully get the jquery >>>>>>>>> ajax post >>>>>>>>> >data, >>>>>>>>> > >>>>>>>>> >but we found if we use ie9 or ie8 to send POST data by jquery >>>>>>>>> ajax , >>>>>>>>> >node.js just receive empty body {} >>>>>>>>> > >>>>>>>>> >even we change the header like content-type to application/json or >>>>>>>>> >text/plain and Accept value it still didn't work >>>>>>>>> > >>>>>>>>> >so is here anyone have the same problem or have any solution , >>>>>>>>> please help >>>>>>>>> >me thanks a lot >>>>>>>>> > >>>>>>>>> >i paste my code below >>>>>>>>> > >>>>>>>>> >------------------------------------------- >>>>>>>>> > >>>>>>>>> >if(jQuery.browser.msie && window.XDomainRequest) { >>>>>>>>> > >>>>>>>>> > //var >>>>>>>>> data=JSON.stringify({'property_id':'50da64f65d396b1e48000001','name':'222','start_date':'2012/11/11'}); >>>>>>>>> > var >>>>>>>>> data='property_id=50da64f65d396b1e48000001&id=222'; >>>>>>>>> > >>>>>>>>> > var xdr = new XDomainRequest(); >>>>>>>>> > xdr.contentType= 'text/plain'; >>>>>>>>> > >>>>>>>>> > xdr.onload = function (e) { >>>>>>>>> > var data = $.parseJSON(xdr.responseText); >>>>>>>>> > if (data == null || typeof (data) == 'undefined') { >>>>>>>>> > alert(data) >>>>>>>>> > } >>>>>>>>> > //success >>>>>>>>> > }; >>>>>>>>> > xdr.onerror = function (e) { >>>>>>>>> > //alert(e); >>>>>>>>> > } >>>>>>>>> > >>>>>>>>> > xdr.open("POST", url); >>>>>>>>> > xdr.send(data); >>>>>>>>> > >>>>>>>>> > } >>>>>>>>> > else >>>>>>>>> > { >>>>>>>>> > >>>>>>>>> $.post(url,{'property_id':'111','name':'222','start_date':'2012/11/11'}, >>>>>>>>> >>>>>>>>> function(data) { >>>>>>>>> > alert(data) >>>>>>>>> > }); >>>>>>>>> > } >>>>>>>>> > >>>>>>>>> > >>>>>>>>> >--------------------------------------------------- >>>>>>>>> > >>>>>>>>> > >>>>>>>>> >$.ajax({ >>>>>>>>> > beforeSend: function(xhrObj){ >>>>>>>>> > >>>>>>>>> xhrObj.setRequestHeader("Content-Type","application/json"); >>>>>>>>> > >>>>>>>>> xhrObj.setRequestHeader("Accept","application/json"); >>>>>>>>> > } >>>>>>>>> > url: url, >>>>>>>>> > type: "POST", >>>>>>>>> > data: JSON.stringify({'property_id' : 'test'}), >>>>>>>>> > headers : { >>>>>>>>> > 'Accept' : 'application/json', >>>>>>>>> > 'Content-Type' : >>>>>>>>> 'application/x-www-form-urlencoded' >>>>>>>>> > }, >>>>>>>>> > dataType: "json", >>>>>>>>> > success: function(data){ >>>>>>>>> > alert(data); >>>>>>>>> > } >>>>>>>>> >}); >>>>>>>>> > >>>>>>>>> >-- >>>>>>>>> >Job Board: http://jobs.nodejs.org/ >>>>>>>>> >Posting guidelines: >>>>>>>>> https://github.com/joyent/node/wiki/Mailing-List-Posting-Guidelines >>>>>>>>> >You received this message because you are subscribed to the Google >>>>>>>>> >Groups "nodejs" group. >>>>>>>>> >To post to this group, send email to [email protected] >>>>>>>>> >To unsubscribe from this group, send email to >>>>>>>>> >[email protected] >>>>>>>>> >For more options, visit this group at >>>>>>>>> >http://groups.google.com/group/nodejs?hl=en?hl=en >>>>>>>>> >>>>>>>>> -- >>>>>>>>> Job Board: http://jobs.nodejs.org/ >>>>>>>>> Posting guidelines: >>>>>>>>> https://github.com/joyent/node/wiki/Mailing-List-Posting-Guidelines >>>>>>>>> You received this message because you are subscribed to the Google >>>>>>>>> Groups "nodejs" group. >>>>>>>>> To post to this group, send email to [email protected] >>>>>>>>> To unsubscribe from this group, send email to >>>>>>>>> [email protected] >>>>>>>>> For more options, visit this group at >>>>>>>>> http://groups.google.com/group/nodejs?hl=en?hl=en >>>>>>>>> >>>>>>>> >>>>>>>> -- Job Board: http://jobs.nodejs.org/ Posting guidelines: https://github.com/joyent/node/wiki/Mailing-List-Posting-Guidelines You received this message because you are subscribed to the Google Groups "nodejs" group. To post to this group, send email to [email protected] To unsubscribe from this group, send email to [email protected] For more options, visit this group at http://groups.google.com/group/nodejs?hl=en?hl=en
