Jump to content
Larry Ullman's Book Forums
Sign in to follow this  
HartleySan

Baffled By An Ie6 Ajax Post Issue

Recommended Posts

I'm currently working on an Ajax Web application that works fine in every browser except IE6, and I'm trying to figure out what the problem with IE6 is. More specifically, Ajax GET requests are processing correctly, but I'm getting an error with Ajax POST requests. For some reason, the PHP script to be called by the POST request does not seem to ever be called in IE6.

 

The following is the function that is called when the Save button (an a link with a JS onclick event attached to it) is clicked in my application as well as the function called by the Ajax onreadystatechange event handler:

 

saveData = function () {

 var sortStr = '',
   dataArrsStr = '',
   d = new Date();

 // String values calculated and assigned to sortStr and dataArrsStr here.

 ajax.open('post', 'php/updateDB.php', true);

 ajax.onreadystatechange = handlePostResponse;

 ajax.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');

 ajax.send('sortStr=' + encodeURIComponent(sortStr) + '&dataArrsStr=' + encodeURIComponent(dataArrsStr) + '&date=' + encodeURIComponent(d));

 return false;

};

handlePostResponse = function () {

 if ((ajax.readyState === 4) && (ajax.status === 200)) {

   links.save.className = 'active';

   if (ajax.responseText === 'OK') {

     links.save.innerHTML = 'Saved';

   } else {

     links.save.innerHTML = 'Not saved';

   }

 }

};

 

To try and debug the problem, I alerted/echoed various values out to screen at various places. This helped me realize that no values are ever being echoed from the updateDB.php script, which leads me to believe that the script is never being called.

 

Furthermore, I alerted ajax.readyState and ajax.status to the screen in the handlePostResponse function, and noticed that the readyState property is 4, but the status property is 503, which definitely seems bad.

 

Below is an example of the strings stored in the sortStr and dataArrsStr variables (before the encodeURIComponent function is executed on them). I'm wondering if there are any characters in these strings that are potentially problematic in IE6:

 

sortStr sample output:
re|re|re|re|re|re|re|re|r|r|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|f|u|u|u|u|m|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|f|u|u|r|u|u|u|u|u|u|u|u|u|f|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|f|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|f|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|f|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|re|u|u|u|u|u|u|u|u|u|u|m|u|u|u|u|u|u|u|u|u|u|u|u|u|u|m|u|u|u|u|u|u|u|u|re|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|r|u|u|u|re|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|m|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|re|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|f|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|r|u|u|u|u|u|u|u|u|u|u|u|u|u|m|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|re|re|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|re|u|u|u|u|u|u|u|u|u|u|u|u|u|f|u|u|u|u|f|u|u|u|u|u|u|u|u|u|u|m|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|m|u|u|u|m|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|re|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|r|u|u|u|u|u|u|re|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|re|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|m|u|u|u|u|u|u|u|u|u|r|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|f|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|m|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|u|m|u|u|u|u|u

dataArrsStr sample output: u???10|11|12|13|14|15|16|17|18|19|20|21|22|23|24|25|26|27|28|29|30|31|32|33|34|35|36|37|38|39|40|42|43|44|45|47|48|49|50|51|52|53|54|55|56|57|58|59|60|61|62|63|64|65|66|67|68|69|70|71|72|73|74|75|76|77|78|79|80|81|82|83|84|85|86|87|88|89|90|91|92|93|94|95|96|97|98|99|100|101|102|104|105|107|108|109|110|111|112|113|114|115|117|118|119|120|121|122|123|124|125|126|127|128|129|130|131|132|133|134|135|136|137|138|139|140|141|142|143|144|145|146|147|148|149|150|151|152|154|155|156|157|158|159|160|161|162|163|164|165|166|167|168|170|171|172|173|174|175|176|177|178|179|180|181|182|183|184|185|186|187|188|189|190|191|192|193|194|195|196|198|199|200|201|202|203|204|205|206|207|208|209|210|211|212|213|214|215|216|217|218|219|220|221|222|223|224|225|226|227|228|229|230|231|232|233|234|235|236|237|238|239|240|241|242|243|244|245|246|247|248|249|250|251|252|253|254|255|256|257|258|259|260|261|262|263|264|265|266|267|268|269|270|271|272|273|274|275|276|277|278|279|280|281|282|283|284|285|286|287|288|289|290|291|292|293|294|295|296|297|298|299|300|301|302|303|304|305|306|307|308|309|310|311|312|313|314|315|316|317|318|319|320|321|322|323|324|325|326|327|328|329|330|331|332|333|334|335|336|337|338|339|341|342|343|344|345|346|347|348|349|350|352|353|354|355|356|357|358|359|360|361|362|363|364|365|367|368|369|370|371|372|373|374|376|377|378|379|380|381|382|383|384|385|386|387|388|389|390|391|392|393|394|395|396|397|398|399|400|401|402|403|404|405|406|407|409|410|411|413|414|415|416|417|418|419|420|421|422|423|424|425|426|427|428|429|430|431|432|434|435|436|437|438|439|440|441|442|443|444|445|446|447|448|449|450|451|452|453|454|456|457|458|459|460|461|462|463|464|465|466|467|468|469|470|471|472|473|474|475|476|477|478|479|480|481|482|483|484|485|486|487|488|489|490|491|492|493|494|495|496|497|498|499|500|501|502|503|504|505|506|507|508|509|510|511|512|513|514|515|516|517|518|519|520|521|522|523|524|525|526|527|528|529|530|531|532|533|534|535|536|537|538|539|540|541|542|543|544|545|546|547|548|549|550|551|552|553|554|555|556|557|558|559|560|561|562|563|564|565|566|567|568|569|570|571|572|573|574|575|576|577|578|580|581|582|583|584|585|586|587|588|589|590|591|592|593|594|595|596|597|598|599|600|601|602|603|604|605|606|607|608|609|610|611|612|613|614|615|616|617|618|619|620|621|622|623|624|625|626|627|628|629|630|631|632|633|634|635|636|637|638|639|640|641|642|643|644|645|646|647|648|649|650|652|653|654|655|656|657|658|659|660|661|662|663|664|666|667|668|669|670|671|672|673|674|675|676|677|678|679|680|681|682|683|684|685|686|689|690|691|692|693|694|695|696|697|698|699|700|701|702|703|704|705|706|707|708|709|710|711|712|713|714|715|716|717|718|719|720|721|722|723|724|725|726|727|728|729|730|731|732|733|735|736|737|738|739|740|741|742|743|744|745|746|747|749|750|751|752|754|755|756|757|758|759|760|761|762|763|765|766|767|768|769|770|771|772|773|774|775|776|777|778|779|780|781|782|783|784|785|786|787|788|789|790|791|792|793|794|795|796|797|798|799|800|801|802|803|804|805|806|807|808|809|810|811|812|813|814|815|816|817|818|819|820|821|822|823|824|825|826|827|828|829|830|831|832|833|834|835|836|837|838|839|840|841|842|843|844|845|846|848|849|850|852|853|854|855|856|857|858|859|860|861|862|863|864|865|866|867|868|869|870|871|872|873|874|875|876|877|878|879|880|881|882|883|884|885|886|887|888|889|890|891|893|894|895|896|897|898|899|900|901|902|903|904|905|906|907|908|909|910|911|912|913|914|915|916|917|918|919|920|921|922|923|924|925|926|927|928|929|930|931|932|933|934|935|936|937|938|939|940|941|942|943|944|945|946|947|948|949|950|951|952|953|954|955|956|957|958|959|960|961|962|963|964|965|966|967|968|969|970|971|972|973|974|975|976|977|978|979|980|981|982|983|984|985|986|987|988|989|990|991|992|993|994|995|996|998|999|1000|1001|1002|1003|1005|1006|1007|1008|1009|1010|1011|1012|1013|1014|1015|1016|1017|1018|1019|1020|1021|1022|1023|1024|1025|1026|1027|1028|1029|1030|1031|1032|1033|1034|1035|1036|1037|1038|1040|1041|1042|1043|1044|1045|1046|1047|1048|1049|1050|1051|1052|1053|1054|1055|1056|1057|1058|1059|1060|1061|1062|1063|1064|1065|1066|1067|1068|1069|1070|1071|1072|1073|1074|1075|1076|1077|1078|1079|1080|1081|1082|1083|1084|1085|1086|1087|1088|1089|1090|1091|1092|1093|1094|1095|1096|1097|1098|1099|1100|1101|1102|1103|1104|1105|1106|1107|1108|1109|1110|1111|1112|1113|1114|1115|1116|1117|1118|1119|1120|1121|1122|1123|1124|1125|1126|1127|1128|1129|1130|1131|1132|1133|1134|1135|1136|1137|1138|1139|1140|1141|1142|1144|1145|1146|1147|1148|1149|1150|1151|1152|1154|1155|1156|1157|1158|1159|1160|1161|1162|1163|1164|1165|1166|1167|1168|1169|1170|1171|1172|1173|1174|1175|1176|1177|1178|1179|1180|1182|1183|1184|1185|1186|1187|1188|1189|1190|1191|1192|1193|1194|1195|1196|1197|1198|1199|1201|1202|1203|1204|1205|1206|1207|1208|1209|1210|1211|1212|1213|1214|1215|1216|1217|1218|1219|1220|1221|1223|1224|1225|1226|1227///r???997|408|1153|651|106|8|9///f???1181|41|748|169|116|103|153|753|579|197///m???433|1143|1200|366|764|46|351|665|847|1222|851///re???734|688|892|375|412|1039|455|0|1|2|3|4|5|6|7|1004|340|687

 

The real kicker is that if I run XAMPP and a local copy of the site in IE6 (without changing anything), the Save button and the Ajax POST requests work fine and save the data as expected.

 

One last suspicion I had is that I'm using the same Ajax object variable (ajax in the code above) for both GET and POST requests. I'm wondering if that is a potential issue in IE6. The function I'm using to create the Ajax object is the one in the book, so I trust that is fine in IE6, not to mention that the Ajax GET request that gets all the data at the beginning of the Web application executes perfectly fine.

 

Basically, I have no clue what the problem is, but I suspect it has something to do with the HTTP 503 error I'm getting, although I don't know how to debug it. Furthermore, I'm stumped why this only happens in IE6 and even moreso, why it doesn't happen in the XAMPP local version of the site in IE6.

 

Any advice on how to solve this problem would be greatly appreciated.

 

Thank you all in advance.

Share this post


Link to post
Share on other sites

Sorry, I'm in Istanbul right now, HartleySan, and can't really address this (have limited time/resources). I'll see what I can do when I return next week (if you're still having problems).

Share this post


Link to post
Share on other sites

Thanks a lot, Larry. Istanbul sounds really exciting. Your first time?

 

Anyway, I going to use VirtualBox to install an old version of XP/IE6 I have, and try to troubleshoot the problem from home.

I'll be sure to report any breakthroughs.

Thanks.

Share this post


Link to post
Share on other sites

Eureka! I finally figured out the problem.

 

It turns out that it wasn't an issue with IE6, but rather, when I tried to post the data via Ajax from certain terminals at work, the request to the PHP script was getting denied because too much data was being sent.

 

It turns out that my work terminals have a character limit per request and when I used the encodeURIComponent function on the data being sent, it was blowing the data up and exceeding the character limit.

 

The solution was to use a simpler delimiter than the vertical bar, one that didn't blow up the data when the encodeURIComponent function was executed on it.

 

I'm so glad to have finally found a solution, and I'm even happier to know that my code wasn't the problem.

Share this post


Link to post
Share on other sites

Yes, first time in Istanbul. A bit of a crazy trip.

 

Kudos for figuring it out and thanks for sharing the solution. Sorry I wasn't able to help.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

×