[Okta Webinar] Learn how to a build a cloud-first strategyRegister Now

x
  • Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 650
  • Last Modified:

& get

this is jquery edit in place
it uses get form

want input text foldername 'at&t'


<form method="GET" action="products.php">
<input id="a" type="hidden" value="addfolderc" name="a">
<input id="foldername" type="text" value="" name="foldername">
<input id="addfolderc" type="submit" value="Add Category Folder" name="addfolderc">
</form>
<br>
<span class="ss_sprite ss_folder"> </span>
<span id="fid6" class="fid6" style="background: none repeat scroll 0% 0% transparent;">(Click here to add text)</span>events=Object { mouseover=[1], mouseout=[1], click=[1]}handle=function()
<br>
<script type="text/javascript">
$(document).ready(function(){
$(".fid6").editInPlace({
url: "products.php",
params: "a=renamefolderc&fid=6",
saving_text: "Saving manage category Folders",
});
});
</script>
<script type="text/javascript">
$(document).ready(function(){
$(".activec6").editInPlace({
url: "products.php",
params: "a=renameactivec&active=6",
saving_text: "Saving renameactive categories",
});
});
</script>

Open in new window



tried
encodeURIComponent() around span text

which appeared in the html as the editable text
0
rgb192
Asked:
rgb192
  • 6
  • 3
  • 3
  • +3
5 Solutions
 
Evan CutlerCommented:
You will need to encode the string before passing it in a GET method.

Here's a reference for two possibilities for you:
http://stackoverflow.com/questions/6544564/url-encode-a-string-in-jquery-for-an-ajax-request

On the receiving end, you can decode and move forward.


Cheers,
Evan
0
 
Julian HansenCommented:
ignore
0
 
Dave BaldwinFixer of ProblemsCommented:
@arcee123 is right but the decoding is normally done automatically on the server.  A standard <form> submit encodes the values automatically but in javascript you have to do it yourself.
0
Concerto's Cloud Advisory Services

Want to avoid the missteps to gaining all the benefits of the cloud? Learn more about the different assessment options from our Cloud Advisory team.

 
Julian HansenCommented:
This link deals with this issue
http://code.google.com/p/jquery-in-place-editor/issues/detail?id=4

Seems the work around is to modify the library to escape the html before the JQuery AJax call
0
 
rgb192Author Commented:
in my question:
I thought that encodeURIComponent()  was the answer but I do not know where to put encodeURIComponent()

the suggestions from the experts are:
use
encodeURIComponent()
0
 
Julian HansenCommented:
Take a look at the link I posted earlier - according to this you need to modify the editInPlace code

http://code.google.com/p/jquery-in-place-editor/issues/detail?id=4
line 225 --
              data: settings.update_value + '=' + escape(new_html) + '&' + 
settings.element_id + '=' + original_element.attr("id") + settings.params + '&' + 
settings.original_html + '=' + escape(original_html),

Open in new window

0
 
Chris StanyonCommented:
@julian - it's no longer a problem - that bug was closed in March 2010.

I'm a little confused - in the code posted above, the form has nothing to do with the editInPlace functions - they are completely separate so the question's a little confusing.

If you submit the form  using the button (GET method) the data in the text boxes will automatically be encoded - if you enter an &, the GET array will contain an &!

If you click the SPAN to fire the editInPlace function, then a POST request is made to the server, again encoding the contents automatically. The POST array will contain keys set in the params argument, plus the standard editInPlace ones.

$(document).ready(function() {
	$(".edit").editInPlace({
		url: "postOutput.php",
		params: "a=renamefolderc&fid=6"
	});
});

<p><span class="edit" id="fullname">Please enter your fullname</span></p>

<?php
//postOutput.php
var_dump($_POST);
?>

Open in new window

0
 
rgb192Author Commented:
update_value=new&element_id=fid6&a=renamefolderc&fid=6&original_html=(Click here to add text)
0
 
rgb192Author Commented:
update_value=new&add more text&element_id=fid6&a=renamefolderc&fid=6&original_html=new


do I have to edit
jquery.inplace.js
0
 
rgb192Author Commented:
jquery.inplace.js


||settings|html|original_element|var|if|this|jQuery|function||original_html|false|value|editing|click_count||children||else|class|text|return|new_html|replace|use_field_type|params|request||trim|background|css|bg_out|saving_image|form|escape_html|selected|optionsValuesArray|field_type|option|success|type|to|inplace_field|select|default_text|error|url|use_value|optionsArray|inplace_value|callback|saving_message|input|name|element_id|alert|save|options|click|textarea|update_value||null|inplace_save

Open in new window


I put
click|textarea|escape(update_value)
http://code.google.com/p/jquery-in-place-editor/issues/detail?id=4

and got no change


I am using a large content management system so this version is older but I do not want to update unless necessary because may cause errors with other parts of my content management system



the newest version
http://code.google.com/p/jquery-in-place-editor/downloads/list

does not have jquery.inplace.js

it has many different files and folders
0
 
rgb192Author Commented:
/**
 * Software License Agreement (BSD License)
 * 
 * Copyright (c) 2008, Dave Hauenstein
 * All rights reserved.
 * 
 * Redistribution and use of this software in source and binary forms, with or
 * without modification, are permitted provided that the following conditions
 * are met:
 * 
 * - Redistributions of source code must retain the above copyright notice,
 *   this list of conditions and the following disclaimer.
 * 
 * - Redistributions in binary form must reproduce the above copyright notice,
 *   this list of conditions and the following disclaimer in the documentation
 *   and/or other materials provided with the distribution.
 * 
 * - Neither the name of Dave Hauenstein nor the names of its contributors may be
 *   used to endorse or promote products derived from this software without
 *   specific prior written permission of Dave Hauenstein
 * 
 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
 * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
 * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
 * POSSIBILITY OF SUCH DAMAGE.
 */
 
 /**
 * Additional edits by Jacob Terry
 */
/*
* @param String   options[url]                  url that post request will hit
* @param String   options[params]               parameters sent via the post request to the server; string; ex: name=dave&last_name=hauenstein
* @param String   options[field_type]           can be: text, textarea, select, datepicker; default: text
* @param String   options[select_options]       this is a string seperated by commas for the dropdown options, if field_type is dropdown
* @param String   options[select_add]           currently unused.
* @param String   options[select_dynamic_url]   the url of the page that will return a comma-delimited list of select options
* @param String   options[select_dynamic_params]the params to send to the page that will return the select options. Format as a single string: "name=value&name=value"
* @param String   options[textarea_cols]        number of columns textarea will have, if field_type is textarea; default: 25
* @param String   options[textarea_rows]        number of rows textarea will have, if field_type is textarea; default: 10
* @param String   options[bg_over]              background color of editable elements on HOVER
* @param String   options[bg_out]               background color of editable elements on RESTORE from hover
* @param String   options[saving_text]          text to be used when server is saving information; default: 'Saving...'
* @param String   options[saving_image]         specify an image location instead of text while server is saving; default: uses saving text
* @param String   options[loading_text]         text to be used when server is loading options for dynamic select; default: 'Loading...'
* @param String   options[default_text]         text to show up if the element that has this functionality is empty
* @param String   options[select_text]          default text to show up in select box
* @param String   options[value_required]       if set to true, the element will not be saved unless a value is entered
* @param String   options[element_id]           name of parameter holding element_id; default: element_id
* @param String   options[update_value]         name of parameter holding update_value; default: update_value
* @param String   options[original_html]        name of parameter holding original_html; default: original_html
* @param Function options[success]              this function gets called if server responds with a success
* @param Function options[error]                this function gets called if server responds with an error
*/

jQuery.fn.editInPlace = function(options) {
    
    /* DEFINE THE DEFAULT SETTINGS, SWITCH THEM WITH THE OPTIONS USER PROVIDES */
    var settings = {
        url:                "",
        params:             "",
        field_type:         "text",
        select_options:     "",
        select_add:            false,
        select_dynamic_url: "",
        select_dynamic_params: "",
        textarea_cols:      "25",
        textarea_rows:      "10",
        bg_over:            "#99a9e8",
        bg_out:             "transparent",
        saving_text:        "Saving...",
        saving_image:       "",
        loading_text:        "Loading...",
        default_text:       "(Click here to add text)",
        select_text:        "Choose new value",
        value_required:     null,
        element_id:         "element_id",
        update_value:       "update_value",
        original_html:      "original_html",
        success:            null,
        error:              function(request){
                                alert("Failed to save value: " + request.responseText || 'Unspecified Error');
                            }
    };

    if(options) {
        jQuery.extend(settings, options);
    }

    /* preload the loading icon if it exists */
    if(settings.saving_image != ""){
        var loading_image = new Image();
        loading_image.src = settings.saving_image;
    }

    /* THIS FUNCTION WILL TRIM WHITESPACE FROM BEFORE/AFTER A STRING */
    String.prototype.trim = function() {
        return this.replace(/^\s+/, '')
                             .replace(/\s+$/, '');
    };

    /* THIS FUNCTION WILL ESCAPE ANY HTML ENTITIES SO "Quoted Values" work */
    String.prototype.escape_html = function() {
        return this.replace(/&/g, "&amp;")
                             .replace(/</g, "&lt;")
                             .replace(/>/g, "&gt;")
                             .replace(/"/g, "&quot;");
    };

    /* CREATE THE INPLACE EDITOR */
    return this.each(function(){
    
        if(jQuery(this).html() == "") jQuery(this).html(settings.default_text);

        var editing = false;   

        //save the original element - for change of scope
        var original_element = jQuery(this);
        
        var click_count = 0;
        
        var state = 'original';
        
        var original_html = jQuery(this).html();

        jQuery(this)

        .mouseover(function(){
            jQuery(this).css("background", settings.bg_over);
        })

        .mouseout(function(){
            jQuery(this).css("background", settings.bg_out);
        })

        .click(function(){
            click_count++;
            
            if(click_count == 1)
            {
            
                function captureEnter()
                {
                       $("#inplace_form").bind("keypress", function(e) {
                          if (e.keyCode == 13) {
                              saveAction();
                              return false;
                          }
                    });                
                
                }
            
                function onBlurAction()
                {
                                    
                    /* set the focus to the new input element */
                    ////////
                    $("#inplace_field").focus().select();
            
                    $("#inplace_field").blur(function () {
                        saveAction();
                    });
             
                }
            
                function onBlurActionDatepicker()
                {
                
                    /* set the focus to the new input element */
                    ////////
                    $('#ui-datepicker-div').data('hover', 1);
                    
                    $("#inplace_field").focus().select();
                                    
                    $("#ui-datepicker-div").hover(
                        function(){ $('#ui-datepicker-div').data('hover', 1); },
                        function(){ $('#ui-datepicker-div').data('hover', 0); }
                    );
            
                    $("#inplace_field").blur(function () {
                        if($("#ui-datepicker-div").data('hover')){
                            return true;
                        } else {
                            saveAction();
                        }
                    });
             
                }            
    
                function onBlurActionDynamicSelect()
                {
                
                    /* set the focus to the new input element */
                    ////////
                    $("#inplace_field").focus().select();
                                    
                    $("#inplace_link").hover(
                        function(){ $('#inplace_link').data('hover', 1); },
                        function(){ $('#inplace_link').data('hover', 0); }
                    );
            
                    $("#inplace_field").blur(function () {
                        if($("#inplace_link").data('hover')){
                                onAddValueDynamicSelectAction();
                            } else {
                                saveAction();
                            }
                    });
             
                }
                
                function onAddValueDynamicSelectAction()
                {
                
                    state = 'alternate';
                
                    original_element.html('<table><tr><td><form class="inplace_form" id="inplace_form" style="margin: 0; padding: 0;"><input type="text" name="inplace_value" id="inplace_field" class="inplace_field" value="" style="width:75px;"/></td><td><a href="#" id="inplace_link">Cancel</a></form></td></tr></table>');
                        
                    /* set the focus to the new input element */
                    ////////
                    $("#inplace_field").focus().select();
                                    
                    $("#inplace_link").hover(
                        function(){ $('#inplace_link').data('hover', 1); },
                        function(){ $('#inplace_link').data('hover', 0); }
                    );
            
                    $("#inplace_field").blur(function () {
                        if($("#inplace_link").data('hover')){
                                onCancelDynamicSelectAction();
                            } else {
                                saveAction();
                            }
                    });
                    
                    captureEnter();
                    
                }
                
                function onCancelDynamicSelectAction()
                {
                                    
                    original_element.html('<table><tr><td><form class="inplace_form" id="inplace_form" style="margin: 0; padding: 0;">' + use_field_type + '</form></td><td><a href="#" id="inplace_link">Add Value</a></form></td></tr></table>');
                                        
                    captureEnter();
                    onBlurDynamicSelect();
                    
                }            
                
                
                function cancelAction()
                {
                    editing = false;
                    click_count = 0;
                    state = 'original';
    
                    /* put the original background color in */
                    original_element.css("background", settings.bg_out);
    
                    /* put back the original text */
                    original_element.html(original_html);
    
                    return false;
                }
    
               function saveAction()
                {                                    
                    /* put the original background color in */
                    original_element.css("background", settings.bg_out);
    
                    var this_elem = jQuery(this);
    
                    var value = $("#inplace_field").val();
                    
                    var text = $("#inplace_field").val();
                    
                    if (settings.field_type == 'select' || (settings.field_type == 'select_dynamic' && state == 'original')) {
                        text = $('#inplace_field :selected').text();
                    }
                            
                    /* set saving message */
                    if(settings.saving_image != ""){
                        var saving_message = '<img src="' + settings.saving_image + '" alt="Saving..." />';
                    } else {
                        var saving_message = settings.saving_text;
                    }
    
                    /* place the saving text/image in the original element */
                    original_element.html(saving_message);
    
                    if(settings.params != ""){
                        settings.params = "&" + settings.params;
                    }
    
                    if (settings.value_required && (value == "" || value == undefined)){
                        editing = false;
                        click_count = 0;
                        state = 'original';
                        original_element.html(original_html);
                        alert("Error: You must enter a value to save this field");
                    } else {
                        jQuery.ajax({
                            url: settings.url,
                            type: "POST",
                            data: settings.update_value + '=' + escape(value) + '&' + settings.element_id + '=' + original_element.attr("id") + settings.params + '&' + settings.original_html + '=' + escape(original_html) + '&state=' + state + '&update_text=' + text,
                            dataType: "html",
                            complete: function(request){
                                editing = false;
                                click_count = 0;
                                state = 'original';
                                original_html = text;
                            },
                            success: function(html){
                                /* if the text returned by the server is empty, */
                                /* put a marker as text in the original element */
                                var new_text = html || settings.default_text;
    
                                /* put the newly updated info into the original element */
                                original_element.html(new_text);
                                if (settings.success) settings.success(html, original_element);
                            },
                            error: function(request) {
                                original_element.html(original_html);
                                if (settings.error) settings.error(request, original_element);
                            }
                        });
                    }
    
                    return false;
                }//end save action
            }//end if click_count == 1            
            
            
            if(!editing)
            {
                editing = true;

                //save original text - for cancellation functionality
                var original_text = jQuery(this).text();
                original_text = original_text.replace(/\n|\t/g, '');
                
                //if html is our default text, clear it out to prevent saving accidentally
                if (original_html == settings.default_text) jQuery(this).html('');

                if (settings.field_type == "textarea")
                {
                    var use_field_type = '<textarea name="inplace_value" class="inplace_field" id="inplace_field" rows="' + settings.textarea_rows + '" cols="' + settings.textarea_cols + '">' + jQuery(this).text().trim().escape_html() + '</textarea>';
                    
                    original_element.html('<form class="inplace_form" id="inplace_form" style="margin: 0; padding: 0;">' + use_field_type + '</form>');
                    
                    captureEnter();
                    onBlurAction();
                }
                else if(settings.field_type == "text")
                {
                    var use_field_type = '<input type="text" name="inplace_value" class="inplace_field" id="inplace_field" value="' + jQuery(this).text().trim().escape_html() + '" />';
                    
                    original_element.html('<form class="inplace_form" id="inplace_form" style="margin: 0; padding: 0;">' + use_field_type + '</form>');
                    
                    captureEnter();
                    onBlurAction();
                }
                else if(settings.field_type == "datepicker")
                {
                    var use_field_type = '<input type="text" name="inplace_value" class="inplace_field" id="inplace_field" value="' + jQuery(this).text().trim().escape_html() + '" />';
                    
                    original_element.html('<form class="inplace_form" id="inplace_form" style="margin: 0; padding: 0;">' + use_field_type + '</form>');
                    
                    $('#inplace_field').datepicker({
                        onSelect: function(tsDate, troPicker) {
                            $("#inplace_field").datepicker('destroy');
                            $("#inplace_field").focus().select();
                        },
                        changeFirstDay: false
                     });
                    
                    captureEnter();
                    onBlurActionDatepicker();
                }               
                else if(settings.field_type == "select")
                {
                    var optionsArray = settings.select_options.split(',');
                    var use_field_type = '<select name="inplace_value" class="inplace_field" id="inplace_field"><option value="">' + settings.select_text + '</option>';
                    for(var i=0; i<optionsArray.length; i++){
                        var optionsValuesArray = optionsArray[i].split(':');
                        var use_value = optionsValuesArray[1] || optionsValuesArray[0];
                        var display_value = optionsValuesArray[0];
                        display_value = display_value.replace(/\n/g, '');
                        var selected = display_value == original_text ? 'selected="selected" ' : '';
                        use_field_type += '<option ' + selected + 'value="' + use_value.trim().escape_html() + '">' + display_value.trim().escape_html() + '</option>';
                    }
                    
                    original_element.html('<form class="inplace_form" id="inplace_form" style="margin: 0; padding: 0;">' + use_field_type + '</form>');
                    
                    captureEnter();
                    onBlurAction();
         
                } 
                else if(settings.field_type == "select_dynamic")
                {
                
                    original_element.html(settings.loading_text);
                
                    $.get(settings.select_dynamic_url + '?' + settings.select_dynamic_params, function(data){
                        optionsArray = data.split(',');
                        use_field_type = '<select name="inplace_value" style="width:75px;" class="inplace_field" id="inplace_field"><option value="">' + settings.select_text + '</option>';
                        for(var i=0; i<optionsArray.length; i++){
                            var optionsValuesArray = optionsArray[i].split(':');
                            var use_value = optionsValuesArray[1] || optionsValuesArray[0];
                            var display_value = optionsValuesArray[0];
                            display_value = display_value.replace(/\n/g, '');
                            var selected = display_value == original_text ? 'selected="selected" ' : '';
                            use_field_type += '<option ' + selected + 'value="' + use_value.trim().escape_html() + '">' + display_value.trim().escape_html() + '</option>';
                        }
                                                
                        original_element.html('<table><tr><td><form class="inplace_form" id="inplace_form" style="margin: 0; padding: 0;">' + use_field_type + '</form></td><td><a href="#" id="inplace_link">Add Value</a></td></tr></table>');
                        
                        captureEnter();
                        onBlurActionDynamicSelect();
                        
                    });
                }
                
                /* hit esc key */
                $(document).keyup(function(event){
                    if (event.keyCode == 27 && editing == true) {
                        cancelAction();
                    }
                });
                
            }/* END- if(!editing) -END */

        });//end click function
    });//end each function
};

Open in new window


this is the newest (2008) version of jquery.inplace.js
which I do not like because my content management system had
save
cancel
buttons

on line 312 I added
2
escape()

I still can not use
 &
in edit inplace
0
 
hieloCommented:
I'm a little confused - in the code posted above, the form has nothing to do with the editInPlace functions - they are completely separate so the question's a little confusing.

If you submit the form  using the button (GET method) the data in the text boxes will automatically be encoded - if you enter an &, the GET array will contain an &!
OK, perhaps the following will help.  Yes, you are correct, they are completely separate. But the point/benefit of using that particular editInPlace plugin is that as you edit one element, it gives you the opportunity to do an ajax update of that particular element/value.  So, essentially, the goal is to do updates exclusively via ajax.  Wrapping everything in <form> tags is just a "fallback" in case the client does not have javascript enabled.  The "user friendliness" becomes more obvious when you have a lot of tabular data and you need to edit multiple cells of various records.  As you edit each "cell" in the table, the db is automatically updated.

I put ... and got no change
Once you have edited something, the plugin sends a "POST" request to the server.  The data gets posted to whatever you specified in the url option:
(".fid6").editInPlace({
url: "products.php",...});

which is not necessarily the same url/script you have in your <form> tag.

For the sake of clarify, let's say your project requires you to update a field of some database table.  On the server script(products.php in this case), you would typically take the value in $_POST['update_value'] and attempt to update the db.  If the update succeeds, you are supposed to echo back an html-encoded version or $_POST['update_value'].  If the db update fails (for whatever reason), then you are supposed to echo back the html-encoded value of $_POST['original_html']  OR don't send back anything - not even white space (in other words you are "sending back" an empty string).  If you echo back an empty string, then the plugin should notice this and revert to the original value.

To summarize, your products.php should basically be doing:
<?php
if( false!==updateTable('`Person`.`company`', $_POST['update_value']) )
{
  echo htmlentities($_POST['update_value'],ENT_QUOTES);
}
exit;

//you need to code this function
//If I were you, I would return false in case of an error (which may be caused 
//by a non-existent field name, db connectivitiy issues, etc) 
//Otherwise I would return the the number of affected records (which may 
//potentially be zero and doesn't necessarily imply an error).  If you do it this way, then
//you need to explicitly test for ===false to detect an actual error (which is what I
//have done above)
function updateTable( $field,$value)
{
  /*connect to db and execute query.  Remember, if any error is encountered, return false*/
}
?>

Open in new window


Lastly, change line 312 to:
data: encodeURIComponent(settings.update_value) + '=' + encodeURIComponent(value) + '&' + encodeURIComponent(settings.element_id) + '=' + encodeURIComponent(original_element.attr("id")) + settings.params + '&' + encodeURIComponent(settings.original_html) + '=' + encodeURIComponent(original_html) + '&state=' + state + '&update_text=' + encodeURIComponent(text),
0
 
Chris StanyonCommented:
@hielo: Thanks. I'm not confused as to what the editInPlace functionality does or the reason for having a form. I'm confused at the question. In the original code the form has nothing to do with the editInPlace code. It's a standalone form that sends a GET request. Neither the form, nor the editInPlace need any encoding - the browser takes care of that.

@rgb192 - it looks like you are using a really old version of editInPlace (2008). The link you provided does have the newest version - v2.2.1 at the top of list. Download the zip files and then extract jquery.editinplace.js. Note the name change - it's no longer inplace - it's editinplace. If you use the newest version it will solve your problem!
0
 
rgb192Author Commented:
using the newest file works for me
thanks


I have a related question of how to activate inplace.js
save
cancel
buttons

http://www.experts-exchange.com/Programming/Languages/Scripting/JavaScript/Q_27855291.html
0
 
hieloCommented:
I'm confused at the question. In the original code the form has nothing to do with the editInPlace code. It's a standalone form that sends a GET request.
Ok, I see your confusion.  To me this was clear because I worked with that plugin a few years back.  Back then, I too was initially loading an empty form and then, depending on the user's interaction, I would dynamically load data (via ajax) to the <form>.  So image I load a <td id="item3"> or a <span id="item3"> with "AT and T" as its inner HTML and I the plugin "attaches" it self to that <td>/<span> so I can then edit it in place to "AT&T".  What the plugin is supposed to do is send "update_value=AT%26T&id=item3", and the server is supposed to echo back the value in $_POST['update_value'] (which in this example is "AT&T").  If it does, then the plugin "accepts" the change, otherwise it reverts to what was there before.  So, with the bug on the plugin, after I type  "AT&T", the plugin is sending "update_value=AT&T&id=item3".  It should be clear to you now that the server sees three parameters:
$_POST['update_value'] ="AT"
$_POST['T']=""
$_POST['id']="item3"

Instead of just two:
$_POST['update_value'] ="AT&T"
$_POST['id']="item3"

So, if I now do:

echo $_POST['update_value'];
exit;

now your client side script gets/sees only "AT".  Which is exactly what he reported.

Now if you submit the actual <form> (which has method="GET"), the data submitted is whatever is on the <form> fields at that point in time, but because the plugin already lost "&T", the on the script that is processing the "GET" request, he will also be missing the "&T" part.

Clear?  Like I said, I worked with that plugin a few years back (when the bug was still unpatched).
0
 
Chris StanyonCommented:
@hielo - thanks for that. In the code posted, the inputs that are managed by editinplace aren't part of the form - never have been and never will be, so they will have absolutely nothing to do with the GET request! They are separate and independent.

It looks like the problem was down to a 4-year-old script. The newer version seems to have resolved his problem, so it's smiles all round :)
0

Featured Post

Concerto Cloud for Software Providers & ISVs

Can Concerto Cloud Services help you focus on evolving your application offerings, while delivering the best cloud experience to your customers? From DevOps to revenue models and customer support, the answer is yes!

Learn how Concerto can help you.

  • 6
  • 3
  • 3
  • +3
Tackle projects and never again get stuck behind a technical roadblock.
Join Now