关于php下的ajax赋值传值的调试

在tp中, 在js中也可以使用 模板变量替换(比如__PUBLIC__)和 模板函数调用(比如: {:U('..')}) 等. 但是 只有直接放在 相应的 模板文件中, 才能有效, 如果javascript 代码, 放在单独的/另外的 js文件中, 通过 script src的方式引入, 那么,在js文件中, 就不能使用模板变量替换和 模板函数了. 因为这些都将无效! 所以, 如果在另外的/单独的文件中, 使用 ajax的时候, 目标文件就不能使用 U方法了, 而是必须写完整的路径了, 比如: '/index.php/Home/Index/ajaxHandler'

关于 模型类Model 和 数据库类DB 和 数据库驱动类Driver的关系?

  • Library/Think/Db/Driver/Mysql.class.php是mysql数据库的驱动.
  • 驱动类: Think\Db\Driver; 是关于数据库的操作类:
  • 有两个成员方法, 名称很接近, 要注意区分: 一个是 数据库驱动类: Driver子类 Mysql.class.php类 的 : getTables($dbName=''), 另一个是: Model 类的 成员方法getFields($tableName);

  • 而在 Think/Model.class.php中有 getField()方法用来 获取字段值或字段列.

  • 模型类有一个成员就是 数据库$db 来做链接

====================

关于ajax的错误, 可能有多种原因:

  1. 要 通过查看: ff的调试控制台 的"console/debugger/Network" 等 多个标签的 信息 , 查找原因, 可能是
  • $.post 的ajax的请求地址错误: 比如 在分离的js文件中 使用 {:U('...')} 地址: 403 forbidden, 301 not found 等原因

  • 分离的js文件中, ajax请求的地址写成完整的地址, 可以是 pathinfo格式的, 操作名最后的.html可以要, 也可以不加.

  • 对ajax的调试 , 要遵从 从简到繁的原则: 在 ajax处理函数中, 先只写最基本的输出返回, 来测试请求地址是否正确; 然后只输出一个简单的 字符串, 来判断返回是否正确; 最后查看结果是否能够输出.

  • 其中很重要的一点是, 看ajax 接收的值是否正确, 于是 在ajaxHandler函数中 只是 { echo $foo = $_POST['foo']; } 看接收到 的结果是否正确.
    然后在 $.post的 回调函数中, 什么都不做, 只是 console.log(ret) 查看返回的值...

谁说在win下 不区分大小写?! 抱有这样的思想的人,是要吃大亏的, 比如javascript中就是 严格区分大小写的, 比如在js 中 你写 $('#somefoo').val(), 而你实际的节点id是 id='someFoo', 那么你将获取不到节点的值. 你在console.log控制台 (会显示在 哪一行 有输出) 上将会看到 输出的值为 空 (什么都没有) . 就有这么一个错误折腾了将近几个小时!

猜你喜欢

转载自www.cnblogs.com/bkylee/p/10247853.html