Отправить URL как данные в cakePHP - PullRequest
0 голосов
/ 01 августа 2010

Я использую cakePHP 1.26.

Я получил текстовое поле ввода, содержащее URL, и я хочу отправить URL и сохранить его в базе данных с помощью Jquery AJAX.

Вот часть HTML:

<input type="text" id="testing" value="https://stackoverflow.com/questions/ask">

Это часть JQuery:

  var whatContent=$("#testing").val();
      var curl="http://localhost:8080/test/grab/"+whatContent;
      $.ajax({
      type: "POST",
      url: curl,   
      success: function(data) {    
      alert(data);}
      });

Это код для действия в контроллере:

function grab($w=null){
   if($w!=null){
     return $w;
    }
}

Код сработал, и я увидел всплывающее сообщение с предупреждением, но в сообщении чего-то не хватало. Я имею в виду, что я должен увидеть весь URL, как это:

https://stackoverflow.com/questions/ask

Но нет, я просто увидел его часть:

http://stackoverflow.com

Позже я изменил значение в поле ввода текста следующим образом:

<input type="text" id="testing" value="https://stackoverflow.com/faq">

Но опять же, возвращаемое значение все еще было

http://stackoverflow.com

cakePHP, похоже, рассматривал URL как некоторые параметры, а не как URL.

Пожалуйста, помогите

1 Ответ

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

Когда вы добавляете содержимое в конец своей переменной curl, как вы, вы пытаетесь добавить его для извлечения через переменную GET и получите результат в запросе, подобном http://localhost:8080/test/grab/http://stackoverflow.com/questions/ask. Очевидно, это неверный запрос. Ваш синтаксический анализ GET не будет последовательным и опасным способом передачи данных обратно в контроллер (особенно если пользователи смогут редактировать добавленное значение).

Вместо этого вы должны использовать атрибут data в jQuery, чтобы передать эту информацию обратно в ваш запрос POST, как описано в инструкциях здесь: http://api.jquery.com/jQuery.ajax/

На стороне Cake вы сможете получить это значение как $this->data['IDValueYouConfigured']. Например, если ваш AJAX-запрос был похож на:

  var whatContent=$("#testing").val();
  var curl="http://localhost:8080/test/grab/";
  $.ajax({
  type: "POST",
  url: curl,
  data: "formValue="+whatContent,   
  success: function(data) {    
  alert(data);}
  });

, где formValue - это IDValueYouConfigured, о котором я упоминал ранее.

Что еще более важно, вы, похоже, неправильно понимаете правильное использование платформы Cake и могли бы выполнять все эти функции НАМНОГО проще, используя такие вещи, как JsHelper , FormHelper и т. Д. Я бы порекомендовал использовать самую свежую версию Cake (1.3.3) и хотя бы один раз следовать учебнику по Blog . Это приведет к лучшим вопросам , которые с большей вероятностью получат полезные ответы. Надеюсь, это поможет.

...