Отправка данных с использованием jQuery, сериализация и циклическая обработка данных через cfloop - PullRequest
0 голосов
/ 23 марта 2011

Надеюсь, это легко исправить, но вот моя ситуация.

Пользователь вводит номер записи и возвращает форму с числом строк X (поток данных взят из внешнего источника данных, поэтому я не могу контролировать способ ввода данных). Я использую jQuery для сериализации формы, а затем отправляю эту информацию на другую страницу с помощью вызова ajax. На странице действий я перебираю данные с помощью знака & (coldfusion cfloop). Проблема, которая появилась сегодня, заключается в том, что в некоторых случаях одно из полей формы может содержать амперсанд (&), который прерывает цикл на странице действий.

Кто-нибудь есть какие-либо предложения о том, как обойти это?

Вот моя функция ajax

 var str = $("#ResourceRequest").serialize();    
 $.ajax({
    type: "POST",
    url: "index.cfm?do=misc.submitRequest&wddxString=" + encodeURIComponent(str),
    data: str,
    contentType: "application/json; charset=utf-8",
    dataType: "html",
    beforeSend: function() {
        //  $('#spinner').css("visibility","visible");
    },
    success: function(data) {
        //  $('#spinner').css("visibility","hidden");
        $('#submitRequest_status').html(data);
        $('#btnSave').html('Submit Request').attr('disabled','');
    },
    error: function() {
        $('#btnSave').html('Submit Request').attr('disabled','');
        //  $('#spinner').css("visibility","hidden");
        alert("We apologize for the inconvenience but\nwe were unable to process your request. [error: 258]");
        //  $('#submitRequest_status').html('');                                
    }

}); * * 1 010

А вот и мой CFLOOP

<cfset var i=0>
<cfloop list="#s#" index=curr_val delimiters="&">
<cfset attr=ListGetAt(curr_val & " ",1,"=")>
<cfset val=ListGetAt(curr_val & " ",2,"=")>

<cfif attr EQ "vpmo">
    <cfset PROJVPMO=ListAppend(PROJVPMO,val)>
<cfelseif attr EQ "projectname">
    <cfset PROJNAM=ListAppend(PROJNAM,val)>
<cfelseif attr EQ "pmt">
    <cfset PROJPMT=ListAppend(PROJPMT,val)>
<cfelseif attr EQ "kickoff">
    <cfset PROJKIC=ListAppend(PROJKIC,val)>
<cfelseif attr EQ "goLive">
    <cfset SYSGOLI=ListAppend(SYSGOLI,val)>
</cfif>

Ответы [ 2 ]

1 голос
/ 23 марта 2011

Когда вы выполняете POST, данные, представленные в "str", должны быть проанализированы ColdFusion и помещены в область видимости. Попробуйте сбросить область видимости формы и посмотрите, что вы получите:

<cfdump var="#form#">
0 голосов
/ 23 марта 2011

$(this).val().replace(/&/g, '^') работал. Мне нужен был один символ, чтобы избежать усечения в базе данных.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...