在cakePHP中提交URL作为数据

时间:2010-08-01 06:18:35

标签: cakephp cakephp-1.2

我正在使用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);}
      });

这是Controller中Action的代码:

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

代码工作正常,我可以看到警告消息弹出,但消息中缺少某些内容。我的意思是我应该看到整个网址:

  

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 个答案:

答案 0 :(得分:1)

当您将内容附加到“curl”变量的末尾时,您尝试添加它以通过GET变量进行检索,并在{{1}请求中获得结果}}。显然这是一个无效的请求。您的http://localhost:8080/test/grab/http://stackoverflow.com/questions/ask变量解析不会保持一致,并且是将数据传递回控制器的危险方式(特别是如果用户能够编辑附加值)。

相反,您应该使用jQuery中的GET属性将此信息传回POST请求中,如下面的说明中所述:http://api.jquery.com/jQuery.ajax/

在蛋糕方面,您将能够以data收到此值。例如,如果您的AJAX请求如下:

$this->data['IDValueYouConfigured']

其中 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

更重要的是,您似乎误解了Cake框架的正确使用,并且可以更简单地使用诸如JsHelperFormHelper之类的内容来执行所有这些功能。我建议使用Cake (1.3.3)的最新版本,并至少跟踪Blog tutorial一次。这将导致better questions更有可能获得有用的答案。希望这会有所帮助。