我正在使用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;
}
}
代码工作正常,我可以看到警告消息弹出,但消息中缺少某些内容。我的意思是我应该看到整个网址:
但不是,我只是看到了它的一部分:
后来我改变了输入文本框中的值,如下所示:
<input type="text" id="testing" value="https://stackoverflow.com/faq">
但同样,返回的值仍然是
cakePHP似乎将URL视为一些参数而不是URL。
请帮忙
答案 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框架的正确使用,并且可以更简单地使用诸如JsHelper,FormHelper之类的内容来执行所有这些功能。我建议使用Cake (1.3.3)的最新版本,并至少跟踪Blog tutorial一次。这将导致better questions更有可能获得有用的答案。希望这会有所帮助。