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

Reply via email to