GVKun编程网logo

Cakephp 2.3.0的简单ajax示例(ajax php教程)

20

在这篇文章中,我们将带领您了解Cakephp2.3.0的简单ajax示例的全貌,包括ajaxphp教程的相关情况。同时,我们还将为您介绍有关ajax–与cakephp的简单json响应、ajax+ph

在这篇文章中,我们将带领您了解Cakephp 2.3.0的简单ajax示例的全貌,包括ajax php教程的相关情况。同时,我们还将为您介绍有关ajax – 与cakephp的简单json响应、ajax+php+mysql 读取数据库的简单示例、Ajax示例、Cakephp $this-> layout =’ajax’的知识,以帮助您更好地理解这个主题。

本文目录一览:

Cakephp 2.3.0的简单ajax示例(ajax php教程)

Cakephp 2.3.0的简单ajax示例(ajax php教程)

请帮助我,如果有人可以给我一个例子,如何在cakephp 2.3.0中使用ajax,一个例子是这样的

<?php echo $this->html->link(''Original'', ''#'',                 array(''onclick''=>''return false;'', ''id''=>''remanufactured-link'', ''class''=>''get-type-product-link'')); ?><div id="content"></div>

当我单击original链接时,具有ID的div content会发生变化。我如何使用cakephp 2.3.0做到这一点?

答案1

小编典典

请参见以下示例:

         $.ajax({            dataType: "html",            type: "POST",            evalScripts: true,            url: ''<?php echo Router::url(array(''controller''=>''your-controller'',''action''=>''your-action''));?>'',            data: ({type:''original''}),            success: function (data, textStatus){                $("#div1").html(data);            }        });

ajax – 与cakephp的简单json响应

ajax – 与cakephp的简单json响应

我试图将一些json传递给cake PHP 2.5中的控制器并再次返回它,以确保它完全正常.

但是我没有回复内容.只有200个成功.从阅读文档我的印象是,如果我传递一些json,那么responseHandler将返回json作为响应.

不确定我错过了什么.

数据被传递

var neworderSer = $(this).sortable("serialize");

这使

item[]=4&item[]=3&item[]=6&item[]=5&item[]=7

appController.PHP

public $components = array(
    'DebugKit.Toolbar','Search.Prg','Session','Auth','RequestHandler'
);

index.ctp

$.ajax({
        url: "/btstadmin/pages/reorder",type: "post",dataType:"json",data: neworderSer,success: function(Feedback) {
            notify('Reordered pages');
        },error: function(e) {
            notify('Reordered pages Failed',{
                status: 'error'
            });
        }
    });

PagesController.PHP

public function reorder() {

    $this->request->onlyAllow('ajax');
    $data = $this->request->data;
    $this->autoRender = false;
    $this->set('_serialize','data');

}

更新:
我现在已经将以下内容添加到routes.PHP中

Router::parseExtensions('json','xml');

我已将控制器更新为

$data = $this->request->data;

    $this->set("status","OK");
    $this->set("message","You are good");
    $this->set("content",$data);
    $this->set("_serialize",array("status","message","content"));

现在一切都很完美.

解决方法

应提供适当的Accept标头或扩展名

为了使请求处理程序能够选择正确的视图,您需要发送相应的Accept标头(application / json),或者在您的情况下提供扩展名.json.并且为了完全识别扩展,需要启用扩展解析.

http://book.cakephp.org/…views.html#enabling-data-views-in-your-application

该视图仅序列化视图变量

JSON视图仅自动序列化视图变量,并且从您显示的代码看起来不像您设置了名为data的视图变量.

http://book.cakephp.org/…views.html#using-data-views-with-the-serialize-key

需要呈现视图

除非有充分的理由,否则不应禁用auto rendering,并且在您的情况下最终也会手动调用Controller:render().目前,您的操作甚至都不会尝试渲染任何内容.

CakeRequest :: onlyAllow()用于HTTP方法

CakeRequest :: onlyAllow()(其btw是deprecated as of CakePHP 2.5)用于指定允许的HTTP方法,即GET,POST,PUT等.虽然使用任何可用的检测器(例如ajax)都可以工作,但您可能不应该依赖它.

长话短说

你的reorder()方法看起来应该更像这样:

public function reorder() {
    if(!$this->request->is('ajax')) {
        throw new BadRequestException();
    }
    $this->set('data',$this->request->data);
    $this->set('_serialize','data');
}

最后,如果您不想/不能使用Accept标头,则需要将.json扩展名附加到AJAX请求的URL:

url: "/btstadmin/pages/reorder.json"

并因此在routes.PHP中启用扩展解析,如:

Router::parseExtensions('json');

PS

有关在不使用扩展名的情况下使用JSON视图的方法,请参阅Cakephp REST API remove the necessity of .format.

ajax+php+mysql 读取数据库的简单示例

ajax+php+mysql 读取数据库的简单示例

这篇文章介绍的内容是关于ajax+php+mysql 读取数据库的简单示例 ,有着一定的参考价值,现在分享给大家,有需要的朋友可以参考一下

1.创建数据库

create database ajaxdemo default charset utf8;
登录后复制

切换到当前数据库

use ajaxdemo;
登录后复制


创建表并插入数据

立即学习“PHP免费学习笔记(深入)”;

CREATE TABLE `ajaxtest` (
  `userid` int(11) NOT NULL AUTO_INCREMENT COMMENT &#39;用户id&#39;,
  `username` varchar(50) NOT NULL COMMENT &#39;用户名&#39;,
  `userpass` varchar(50) NOT NULL COMMENT &#39;密码&#39;,
  `userage` int(11) NOT NULL COMMENT &#39;年龄&#39;,
  `usersex` varchar(1) NOT NULL COMMENT &#39;性别&#39;,
  PRIMARY KEY (`userid`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
登录后复制

立即学习“PHP免费学习笔记(深入)”;

立即学习“PHP免费学习笔记(深入)”;

INSERT INTO `ajaxtest` VALUES (&#39;1&#39;, &#39;李四&#39;, &#39;lisi&#39;, &#39;15&#39;, &#39;男&#39;);
INSERT INTO `ajaxtest` VALUES (&#39;2&#39;, &#39;张三&#39;, &#39;lisi&#39;, &#39;20&#39;, &#39;女&#39;);
INSERT INTO `ajaxtest` VALUES (&#39;3&#39;, &#39;王五&#39;, &#39;lisi&#39;, &#39;25&#39;, &#39;男&#39;);
INSERT INTO `ajaxtest` VALUES (&#39;4&#39;, &#39;韩梅梅&#39;, &#39;lisi&#39;, &#39;25&#39;, &#39;男&#39;);
INSERT INTO `ajaxtest` VALUES (&#39;5&#39;, &#39;张莉&#39;, &#39;lisi&#39;, &#39;25&#39;, &#39;女&#39;);
登录后复制

立即学习“PHP免费学习笔记(深入)”;

2.创建index.php,查询数据库中的信息并展示给用户

立即学习“PHP免费学习笔记(深入)”;

<html>
	<head>
		<meta charset="utf-8"/>
		<title>ajax实例</title>
		<link href="https://cdn.bootcss.com/bootstrap/3.3.7/css/bootstrap.min.css" rel="stylesheet">
	</head>
	<body>
		<p>
			<p>
				<p>
					Ajax实例
				</p>
				<p>
					<formrole="search" name="myform">
						<p>
							<label>
								年龄:<input type="number"placeholder="Age" name="userage" id=&#39;userage&#39;/>
							</label>
						</p>
						<selectid="usersex" name="usersex">
							<option value="男">男</option>
							<option value="女">女</option>
						</select>
						<button type="button"onclick=&#39;ajaxFunction()&#39;>提交</button>
					</form>
					
					<tableid="ajaxp"></table>
					<p>SQL语句:<pre id="sql">
登录后复制

>

立即学习“PHP免费学习笔记(深入)”;

3.创建ajaxtest.php来响应index.php的请求

<?php
    error_reporting(0);//不显示警告信息
    $dbhost="localhost";
    $dbuser="root";
    $dbpass="root";
    $dbname="ajaxdemo";

$mysqli=new mysqli($dbhost,$dbuser,$dbpass,$dbname);
$mysqli->query("SET NAMES &#39;UTF8&#39; ");

$userage=$_GET[&#39;userage&#39;];
$usersex=$_GET[&#39;usersex&#39;];

$userage=$mysqli->real_escape_string($userage);
$usersex=$mysqli->real_escape_string($usersex);

$query="select * from ajaxtest where usersex=&#39;$usersex&#39;";

if(is_numeric($userage))
{
    $query .="AND userage <= $userage;";
}
$qry_result=$mysqli->query($query);

if($qry_result->num_rows==0)
{
    echo json_encode([&#39;data&#39;=>&#39;<h2>未找到符合条件的记录</h2>&#39;,&#39;sql&#39;=>$query]);
    return ;
}

$display_string ="<tr>";
$display_string .="<td>用户名</td>";
$display_string .="<td>年龄</td>";
$display_string .="<td>性别</td>";
$display_string .="</tr>";

//insert a new row in the table for each person returned
while($row=mysqli_fetch_object($qry_result)){
    $display_string.="<tr>";
    $display_string.="<td>$row->username</td>";
    $display_string.="<td>$row->userage</td>";
    $display_string.="<td>$row->usersex</td>";
    $display_string.="</tr>";
}

echo json_encode([&#39;data&#39;=>$display_string,&#39;sql&#39;=>$query]);//返回json数据格式
?>
登录后复制

结果:

相关推荐:

PHP读取数据库并按照中文名称进行排序实现代码_PHP教程



以上就是ajax+php+mysql 读取数据库的简单示例 的详细内容,更多请关注php中文网其它相关文章!

Ajax示例

Ajax示例

<%@page pageEncoding="utf-8" contentType="text/html;charset=utf-8"%> <html> <head> <script type="text/javascript"> //step1 获得XmlHttpRequest对象。 function getXmlHttpRequest(){ var xmlHttpRequest = null; if ((typeof XMLHttpRequest) != 'undefined') { xmlHttpRequest = new XMLHttpRequest(); } else { xmlHttpRequest = new ActiveXObject('Microsoft.XMLHttp'); } return xmlHttpRequest; } function valiusername(){ //step1 获得XmlHttpRequest对象。 var xhr = getXmlHttpRequest(); var value = document.getElementById("username").value; //step2 使用XmlHttpRequest对象向服务器发送请求。发送get请求 xhr.open("get","valiusername.do?username=" + encodeURI(value),true); //step4 使用服务器返回的数据更新页面。 xhr.onreadystatechange = function(){ if(xhr.readyState == 4){ if(xhr.status == 200){ var txt = xhr.responseText; var obj = document.getElementById('username_msg'); obj.innerHTML = txt; }else{ var obj = document.getElementById('username_msg'); obj.innerHTML = 'system error'; } }else{ var obj = document.getElementById('username_msg'); obj.innerHTML = 'checking...'; } }; xhr.send(null); } function valiusername2(){ var xhr = getXmlHttpRequest(); var value = document.getElementById("username").value; xhr.open("post","valiusername.do",true); xhr.setRequestHeader("Content-Type","application/x-www-form-urlencoded"); xhr.onreadystatechange = function(){ if(xhr.readyState == 4){ if(xhr.status == 200){ var txt = xhr.responseText; var obj = document.getElementById('username_msg'); obj.innerHTML = txt; }else{ var obj = document.getElementById('username_msg'); obj.innerHTML = 'system error'; } }else{ var obj = document.getElementById('username_msg'); obj.innerHTML = 'checking...'; } }; xhr.send("username=" + value); } </script> </head> <body> <form action="regist.do" method="post"> 用户名:<input id="username" name="username" onblur="valiusername();"/> <spanid="username_msg"></span> <br/> 密码:<input name="pwd"/> <br/> <input type="submit" value="确认"/> </form> </body> </html>


package web; import java.io.IOException; import java.io.PrintWriter; import javax.servlet.servletexception; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; public class UserServlet extends HttpServlet { public void service(HttpServletRequest request,HttpServletResponse response) throws servletexception,IOException { request.setCharacterEncoding("utf-8"); String uri =request.getRequestURI(); String path = uri.substring(uri.lastIndexOf("/"),uri.lastIndexOf(".")); response.setContentType("text/html;charset=utf-8"); PrintWriter out = response.getWriter(); if(path.equals("/valiusername")){ System.out.println("valiusername..."); String username = request.getParameter("username"); System.out.println("username:" + username); if(username.equals("张三")){ out.println("用户名已经存在."); }else{ out.println("可以使用"); } }else if(path.equals("/regist")){ } } }

Cakephp $this-> layout =’ajax’

Cakephp $this-> layout =’ajax’

当我在控制器中声明$this-> layout =’ajax’时,我的css dosnt似乎正常工作.

在我的view1.ctp中,我使用jquery创建了一个对话框.内容将通过jquery.ajax()从view2.ctp获取.我创建了html类,id和所有类似于view1.ctp.

我收到的内容还可以.问题是我在view2.ctp中声明的id和类不起作用.总之,我得到一个空的对话框设计.

关于如何解决这个问题的任何想法?先感谢您.干杯!

在我的view1.ctp中:

<div id="thisDialog">
    <div id="content">
    </div>
</div>  

<script>
    jQuery('.test_Box').live('click',function(){
        jQuery('#content').empty();
        jQuery.ajax({
            async:false,url: '/controller1/view2/'+id //url pointing to my 1controller.PHP
            success:function(data){
                jQuery('#content').append(data);

            }
        });


        jQuery('#thisDialog').dialog('open');
    });

</script>

这是controller1.PHP

function view2($id)
    {
    $this->layout = 'ajax';
    $query = $this->Model->find('all') //somequery here
}

这是view2.ctp

<div>
     <div>
          <h5>Title here</h5>
     </div>
     <div>
         <table>
             <tr>
             <td></td>
              <td></td>
              </tr> 
              <tr>
               <td>Field content1 here</td>
               <td>Fields content2 here</td>
              </tr>
         </table>
     </div>
</div>

解决方法

AJAX布局是一个简单的空白文件,仅包含您输出的HTML(或其他内容)废料.它不包含任何样式表,因为样式信息应来自您要插入内容的页面.在调用页面中为ID和类定义样式将解决您的问题.

关于Cakephp 2.3.0的简单ajax示例ajax php教程的介绍现已完结,谢谢您的耐心阅读,如果想了解更多关于ajax – 与cakephp的简单json响应、ajax+php+mysql 读取数据库的简单示例、Ajax示例、Cakephp $this-> layout =’ajax’的相关知识,请在本站寻找。

本文标签: