Ravens PHP Scripts: Forums
 

 

View next topic
View previous topic
Post new topic   Reply to topic    Ravens PHP Scripts And Web Hosting Forum Index -> JavaScript
Author Message
Doulos
Life Cycles Becoming CPU Cycles



Joined: Jun 06, 2005
Posts: 732

PostPosted: Mon Sep 29, 2008 12:08 pm Reply with quote

I am using an AJAX script to open popup windows containing text. This works fine on my local test server but I keep getting this error when I upload it to a remote server, and I have tried 2 with different hosts.

Quote:
METHOD NOT ALLOWED
The requested methot POST is not allowed for the URL ......


This type of script works fine on many other sites that I have seen, including HG.

Any help would be appreciated.

Thanks
 
View user's profile Send private message
evaders99
Former Moderator in Good Standing



Joined: Apr 30, 2004
Posts: 3221

PostPosted: Mon Sep 29, 2008 12:47 pm Reply with quote

Is your server using mod_security perhaps?

Also with AJAX, I believe the requests must be from the same page. So make sure the URLs do not have the server hard-coded... use a relative link.

_________________
- Only registered users can see links on this board! Get registered or login! -

Need help? Only registered users can see links on this board! Get registered or login! 
View user's profile Send private message Visit poster's website
Doulos







PostPosted: Mon Sep 29, 2008 2:02 pm Reply with quote

evaders99 wrote:
Is your server using mod_security perhaps?


Yes, they are using mod_security. I am NOT using it on my local box. I thought that might be the problem.

Quote:
Also with AJAX, I believe the requests must be from the same page. So make sure the URLs do not have the server hard-coded... use a relative link.


I am using relative links.

Thanks for your reply.
 
Doulos







PostPosted: Tue Sep 30, 2008 10:21 am Reply with quote

Server operator placed the following in my homedirectory/.htaccess file and now the ajax popup work.

AddHandler application/x-httpd-php5 .html .htm
 
evaders99







PostPosted: Tue Sep 30, 2008 10:40 am Reply with quote

Hmm that .html files are being processed by the PHP interpreter. I don't know why that would have been a problem... it's a new one for me Smile
 
montego
Site Admin



Joined: Aug 29, 2004
Posts: 9457
Location: Arizona

PostPosted: Tue Sep 30, 2008 5:43 pm Reply with quote

Any chance you can dig out the AJAX URL call and post it here or PM it to me? I am surprised too to see this as a "fix".

_________________
Only registered users can see links on this board! Get registered or login!
Only registered users can see links on this board! Get registered or login! 
View user's profile Send private message Visit poster's website
djmaze
Subject Matter Expert



Joined: May 15, 2004
Posts: 727
Location: http://tinyurl.com/5z8dmv

PostPosted: Wed Oct 01, 2008 1:33 pm Reply with quote

Definitions:

POST: Send information to the server that needs to be processed

GET: Retrieve information from the server

HTML: Is a document that you can retrieve from the server

So why are you posting to a HTML document?
You should get the document.

_________________
$ mount /dev/spoon /eat/fun auto,overclock 0 1
ERROR: there is no spoon
http://claimedavatar.net/ 
View user's profile Send private message Visit poster's website
Doulos







PostPosted: Wed Oct 01, 2008 5:00 pm Reply with quote

Once, I did get the GET not allowed message.

I will be happy to post the exact method whereby I try to get this script to work. delete it if you need to.

I have explained, I am a user not a programmer. I don't know php, javascript... I barely know anything about html. I don't know what I am doing, and I am apparently a slow learner, that is why I come here for help.

AJAX.JS
Code:
/* Simple AJAX Code-Kit (SACK) */

/* ©2005 Gregory Wild-Smith */
/* www.twilightuniverse.com */
/* Software licenced under a modified X11 licence, see documentation or authors website for more details */

function sack(file){
   this.AjaxFailedAlert = "Your browser does not support the enhanced functionality of this website, and therefore you will have an experience that differs from the intended one.\n";
   this.requestFile = file;
   this.method = "POST";
   this.URLString = "";
   this.encodeURIString = true;
   this.execute = false;

   this.onLoading = function() { };
   this.onLoaded = function() { };
   this.onInteractive = function() { };
   this.onCompletion = function() { };

   this.createAJAX = function() {
      try {
         this.xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
      } catch (e) {
         try {
            this.xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
         } catch (err) {
            this.xmlhttp = null;
         }
      }
      if(!this.xmlhttp && typeof XMLHttpRequest != "undefined")
         this.xmlhttp = new XMLHttpRequest();
      if (!this.xmlhttp){
         this.failed = true;
      }
   };
   
   this.setVar = function(name, value){
      if (this.URLString.length < 3){
         this.URLString = name + "=" + value;
      } else {
         this.URLString += "&" + name + "=" + value;
      }
   }
   
   this.encVar = function(name, value){
      var varString = encodeURIComponent(name) + "=" + encodeURIComponent(value);
   return varString;
   }
   
   this.encodeURLString = function(string){
      varArray = string.split('&');
      for (i = 0; i < varArray.length; i++){
         urlVars = varArray[i].split('=');
         if (urlVars[0].indexOf('amp;') != -1){
            urlVars[0] = urlVars[0].substring(4);
         }
         varArray[i] = this.encVar(urlVars[0],urlVars[1]);
      }
   return varArray.join('&');
   }
   
   this.runResponse = function(){
      eval(this.response);
   }
   
   this.runAJAX = function(urlstring){
      this.responseStatus = new Array(2);
      if(this.failed && this.AjaxFailedAlert){
         alert(this.AjaxFailedAlert);
      } else {
         if (urlstring){
            if (this.URLString.length){
               this.URLString = this.URLString + "&" + urlstring;
            } else {
               this.URLString = urlstring;
            }
         }
         if (this.encodeURIString){
            var timeval = new Date().getTime();
            this.URLString = this.encodeURLString(this.URLString);
            this.setVar("rndval", timeval);
         }
         if (this.element) { this.elementObj = document.getElementById(this.element); }
         if (this.xmlhttp) {
            var self = this;
            if (this.method == "GET") {
               var totalurlstring = this.requestFile + "?" + this.URLString;
               this.xmlhttp.open(this.method, totalurlstring, true);
            } else {
               this.xmlhttp.open(this.method, this.requestFile, true);
            }
            if (this.method == "POST"){
                 try {
                  this.xmlhttp.setRequestHeader('Content-Type','application/x-www-form-urlencoded') 
               } catch (e) {}
            }

            this.xmlhttp.send(this.URLString);
            this.xmlhttp.onreadystatechange = function() {
               switch (self.xmlhttp.readyState){
                  case 1:
                     self.onLoading();
                  break;
                  case 2:
                     self.onLoaded();
                  break;
                  case 3:
                     self.onInteractive();
                  break;
                  case 4:
                     self.response = self.xmlhttp.responseText;
                     self.responseXML = self.xmlhttp.responseXML;
                     self.responseStatus[0] = self.xmlhttp.status;
                     self.responseStatus[1] = self.xmlhttp.statusText;
                     self.onCompletion();
                     if(self.execute){ self.runResponse(); }
                     if (self.elementObj) {
                        var elemNodeName = self.elementObj.nodeName;
                        elemNodeName.toLowerCase();
                        if (elemNodeName == "input" || elemNodeName == "select" || elemNodeName == "option" || elemNodeName == "textarea"){
                           self.elementObj.value = self.response;
                        } else {
                           self.elementObj.innerHTML = self.response;
                        }
                     }
                     self.URLString = "";
                  break;
               }
            };
         }
      }
   };
this.createAJAX();
}
AJAX-DYNAMIC-CONTENT.JS
Code:
/************************************************************************************************************

Ajax dynamic content
Copyright (C) 2006  DTHMLGoodies.com, Alf Magne Kalleland

This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
License as published by the Free Software Foundation; either
version 2.1 of the License, or (at your option) any later version.

This library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
Lesser General Public License for more details.

You should have received a copy of the GNU Lesser General Public
License along with this library; if not, write to the Free Software
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA

Dhtmlgoodies.com., hereby disclaims all copyright interest in this script
written by Alf Magne Kalleland.

Alf Magne Kalleland, 2006
Owner of DHTMLgoodies.com
   
************************************************************************************************************/   

var enableCache = true;
var jsCache = new Array();

var dynamicContent_ajaxObjects = new Array();

function ajax_showContent(divId,ajaxIndex,url)
{
   document.getElementById(divId).innerHTML = dynamicContent_ajaxObjects[ajaxIndex].response;
   if(enableCache){
      jsCache[url] =    dynamicContent_ajaxObjects[ajaxIndex].response;
   }
   dynamicContent_ajaxObjects[ajaxIndex] = false;
}

function ajax_loadContent(divId,url)
{
   if(enableCache && jsCache[url]){
      document.getElementById(divId).innerHTML = jsCache[url];
      return;
   }

   
   var ajaxIndex = dynamicContent_ajaxObjects.length;
   document.getElementById(divId).innerHTML = 'Loading content - please wait';
   dynamicContent_ajaxObjects[ajaxIndex] = new sack();
   
   if(url.indexOf('?')>=0){
      dynamicContent_ajaxObjects[ajaxIndex].method='GET';
      var string = url.substring(url.indexOf('?'));
      url = url.replace(string,'');
      string = string.replace('?','');
      var items = string.split(/&/g);
      for(var no=0;no<items.length;no++){
         var tokens = items[no].split('=');
         if(tokens.length==2){
            dynamicContent_ajaxObjects[ajaxIndex].setVar(tokens[0],tokens[1]);
         }   
      }   
      url = url.replace(string,'');
   }
   
   dynamicContent_ajaxObjects[ajaxIndex].requestFile = url;   // Specifying which file to get
   dynamicContent_ajaxObjects[ajaxIndex].onCompletion = function(){ ajax_showContent(divId,ajaxIndex,url); };   // Specify function that will be executed after file has been found
   dynamicContent_ajaxObjects[ajaxIndex].runAJAX();      // Execute AJAX function   
   
   
}
AJAX-TOOLTIP.JS
Code:
/************************************************************************************************************

Ajax tooltip
Copyright (C) 2006  DTHMLGoodies.com, Alf Magne Kalleland

This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
License as published by the Free Software Foundation; either
version 2.1 of the License, or (at your option) any later version.

This library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
Lesser General Public License for more details.

You should have received a copy of the GNU Lesser General Public
License along with this library; if not, write to the Free Software
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA

Dhtmlgoodies.com., hereby disclaims all copyright interest in this script
written by Alf Magne Kalleland.

Alf Magne Kalleland, 2006
Owner of DHTMLgoodies.com
   
************************************************************************************************************/   




/* Custom variables */

/* Offset position of tooltip */
var x_offset_tooltip = 5;

var y_offset_tooltip = 0;

/* Don't change anything below here */


var ajax_tooltipObj = false;
var ajax_tooltipObj_iframe = false;

var ajax_tooltip_MSIE = false;
if(navigator.userAgent.indexOf('MSIE')>=0)ajax_tooltip_MSIE=true;


function ajax_showTooltip(externalFile,inputObj)
{
   if(!ajax_tooltipObj)   /* Tooltip div not created yet ? */
   {
      ajax_tooltipObj = document.createElement('DIV');
      ajax_tooltipObj.style.position = 'absolute';
      ajax_tooltipObj.id = 'ajax_tooltipObj';      
      document.body.appendChild(ajax_tooltipObj);

      
      var leftDiv = document.createElement('DIV');   /* Create arrow div */
      leftDiv.className='ajax_tooltip_arrow';
      leftDiv.id = 'ajax_tooltip_arrow';
      ajax_tooltipObj.appendChild(leftDiv);
      
      var contentDiv = document.createElement('DIV'); /* Create tooltip content div */
      contentDiv.className = 'ajax_tooltip_content';
      ajax_tooltipObj.appendChild(contentDiv);
      contentDiv.id = 'ajax_tooltip_content';
      
      if(ajax_tooltip_MSIE){   /* Create iframe object for MSIE in order to make the tooltip cover select boxes */
         ajax_tooltipObj_iframe = document.createElement('<IFRAME frameborder="0">');
         ajax_tooltipObj_iframe.style.position = 'absolute';
         ajax_tooltipObj_iframe.border='0';
         ajax_tooltipObj_iframe.frameborder=0;
         ajax_tooltipObj_iframe.style.backgroundColor='#FFF';
         ajax_tooltipObj_iframe.src = 'about:blank';
         contentDiv.appendChild(ajax_tooltipObj_iframe);
         ajax_tooltipObj_iframe.style.left = '0px';
         ajax_tooltipObj_iframe.style.top = '0px';
      }

         
   }
   // Find position of tooltip
   ajax_tooltipObj.style.display='block';
   ajax_loadContent('ajax_tooltip_content',externalFile);
   if(ajax_tooltip_MSIE){
      ajax_tooltipObj_iframe.style.width = ajax_tooltipObj.clientWidth + 'px';
      ajax_tooltipObj_iframe.style.height = ajax_tooltipObj.clientHeight + 'px';
   }

   ajax_positionTooltip(inputObj);
}

function ajax_positionTooltip(inputObj)
{
   var leftPos = (ajaxTooltip_getLeftPos(inputObj) + inputObj.offsetWidth);
   var topPos = ajaxTooltip_getTopPos(inputObj);
   
   /*
   var rightedge=ajax_tooltip_MSIE? document.body.clientWidth-leftPos : window.innerWidth-leftPos
   var bottomedge=ajax_tooltip_MSIE? document.body.clientHeight-topPos : window.innerHeight-topPos
   */
   var tooltipWidth = document.getElementById('ajax_tooltip_content').offsetWidth +  document.getElementById('ajax_tooltip_arrow').offsetWidth;
   // Dropping this reposition for now because of flickering
   //var offset = tooltipWidth - rightedge;
   //if(offset>0)leftPos = Math.max(0,leftPos - offset - 5);
   
   ajax_tooltipObj.style.left = leftPos + 'px';
   ajax_tooltipObj.style.top = topPos + 'px';   
   
   
}


function ajax_hideTooltip()
{
   ajax_tooltipObj.style.display='none';
}

function ajaxTooltip_getTopPos(inputObj)
{      
  var returnValue = inputObj.offsetTop;
  while((inputObj = inputObj.offsetParent) != null){
     if(inputObj.tagName!='HTML')returnValue += inputObj.offsetTop;
  }
  return returnValue;
}

function ajaxTooltip_getLeftPos(inputObj)
{
  var returnValue = inputObj.offsetLeft;
  while((inputObj = inputObj.offsetParent) != null){
     if(inputObj.tagName!='HTML')returnValue += inputObj.offsetLeft;
  }
  return returnValue;
}
CALLED USING ...
Code:
<img src="images/info.gif" alt="info" height="16" width="16"  onmouseover="ajax_showTooltip ('FILENAME.html',this);return false" onmouseout="ajax_hideTooltip()" />
 
Raven
Site Admin/Owner



Joined: Aug 27, 2002
Posts: 17088

PostPosted: Wed Oct 01, 2008 5:20 pm Reply with quote

I see no relationship between the problem and the "supposed" solution unless you have php code in your .html documents? I, too, use the php handler for html documents on other sites. It's handy for dropping occasional php code into HTML documents w/o having to rename the document to *.php and then renaming any/all links that need to reference the original *.html documents. So, is your document that calls this ajax code an HTML document or a PHP document - something.html or something.php? Yes, there is a very slight overhead in doing this but it's no big deal.
 
View user's profile Send private message
djmaze







PostPosted: Thu Oct 02, 2008 9:48 am Reply with quote

Doulos wrote:
I have explained, I am a user not a programmer. I don't know php, javascript... I barely know anything about html. I don't know what I am doing, and I am apparently a slow learner, that is why I come here for help.


Right! And now that you've posted the code it is easy to find the issue:

Code:
this.method = "POST";


Somewhere it should be set to "GET"
 
Display posts from previous:       
Post new topic   Reply to topic    Ravens PHP Scripts And Web Hosting Forum Index -> JavaScript

View next topic
View previous topic
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum
You can attach files in this forum
You can download files in this forum


Powered by phpBB © 2001-2007 phpBB Group
All times are GMT - 6 Hours
 
Forums ©