Отправка формы JQuery и контроллер CakePHP - PullRequest
0 голосов
/ 24 июня 2009

Я использую CakePHP и jQuery для своего приложения.

Мой код jQuery:

$(document).ready(function(){
    var str,fields;
    function showValues() {
        str = $("form").serialize();
        $("#results").text(str);
    }
    $("input").change(showValues);
    showValues();
    $(".submit").click(function (){
        alert(str);
        $.ajax({
            type: "POST",
            url: "http://localhost/cake_1.2.1.8004/index.php/results/submit1",
            data: "str="+str,

            success: function(msg){
                alert( "Data Saved: " + msg);
            }
        });//ajax
        return false;
    });//submit click
});//ready 

В то время как в сообщении о щелчке на кнопке отправки отображается элемент ввода, например .. _method=POST&name=a

Но когда я отправляю это значение и удаляю его в контроллере, отображается только _method=POST..

Код моего контроллера выглядит так:

function submit1($id = null) {
    echo "in ctrller ".$_POST['str'];
}

Как получить все значение в контроллере и сохранить его. Или есть какой-нибудь способ получить?

Ответы [ 2 ]

0 голосов
/ 01 августа 2010

Я не знаю, связано ли это с вашей проблемой (хотя, зная Cake, есть хороший шанс), но это неправильный способ передачи данных из формы в Cake. Что вы должны сделать, это использовать data[key] в качестве ключа. Cake возьмет это и создаст из него массив с именем $this->data. Если вы используете FormHelper для создания HTML-формы, он автоматически установит для атрибута name значение data[Model][attribute], к которому можно получить доступ с помощью $this->data['Model']['attribute'], или передаст его функции сохранения, которая является фактически предполагаемым использованием. *

0 голосов
/ 24 июня 2009

Параметр data для вызова $ .ajax принимает строку в следующем формате:

param1=val1&param2=val2

теперь вы уже производите строку в этом формате, используя $ ("form"). Serialize (); таким образом, правильный способ назначить это так:

  $.ajax({
    type: "POST",
    url: "http://localhost/cake_1.2.1.8004/index.php/results/submit1",
    data: str
  })

Ваш контроллер может затем проверить массив $ _POST для параметра, который вы ищете.

Или выведите параметры POST в виде строки запроса:

echo http_build_query($_POST);
...