Home  >  Article  >  Backend Development  >  如何将php函数传递到js使用

如何将php函数传递到js使用

WBOY
WBOYOriginal
2016-06-23 13:38:381002browse

项目在后端php有一些字符串处理函数,或者是字符串合法性检测类
网页前端也需要用到,不想单独编写js代码,维护起来很麻烦,也会有细小的差异可能导致新问题
我的想法是在js和php两边各编写一个统一接口,定义一套函数调用的规则,函数名和参数如何传递等等,靠json返回结果
有这些疑问:
1.听说过webservice这个词,它指的是设计思想,还是实际的php模块呢?
2.这种通过网络调用函数的办法,安全和隐私怎样保证呢?我只想被自己的项目调用
3.这种办法有网络延迟,有没有更好的解决方案呢?
4.nodejs是否可以真正的实现前后端共用代码?可以放一个示例吗?


回复讨论(解决方案)

1. webservice的定义其实很宽,其实就是一种远程调用技术。
2. 基于身份验证,同域的后端与前段交互可以基于网站本身的用户身份验证,后端与后端的交互验证实现方式就多了
3. 简单的字符串处理等函数(不是基于依赖数据查询的复杂业务的)应该同样在js实现一个,网络问题没办法解决。
4. 基于web是不可能的。

其实楼主想要实现的东西, asp.net的控件早已经实现了.

在js和php两边各编写一个统一接口,定义一套函数调用的规则,函数名和参数如何传递等等,靠json返回结果

?用??可以?一,但?查的代??是要分??js和php ?套啊

正常就是该这么做吧!
前端把敏感数据传过来,服务端处理完成返回json数据!
但是普通的字符串处理建议别放服务端,增加了服务端压力!尽量在客户端处理!

php函数不能放在js中使用,原因很简单:两者的语法规则不一样。
所以,只要两者的语法规则是一样的,那么就可相互调用,比如 nodejs 和 javascript
当然因为两者处于网络的两端,这就有了通讯的问题。好在 nodejs 天生就支持 websock 协议,通讯问题就被内部隐藏了
不过这显然不是 php 版面讨论的问题

微软一直在推耸?客户端的 B/S,所以 vs 中就出现了客户端控件这个东西(只需在服务端书写代码)
它实际上是通过 xmlhttp 组件实现了浏览器与服务器间的通讯
而这种技术就是后来炒的沸沸扬扬的 AJAX 技术

webservice 就是 WEB服务
比较奇怪的是为什么要把它单列出来。普通网站不也是 WEB服务吗?
如果 http://localhost/add.php?a=1&b=2 返回 3,称之为网页
那么 http://localhost/index.php?m=add&a=1&b=2 也返回 3,为何就称之为远程调用了呢
只使用 HTTP 的 get、post 方法的称之为网页
而使用了 HTTP 其他的如 put、delete.... 方法的就称为 REST
其实并没有必要在一些名词上纠结,只要能达到目的就可以了

php 目前提供了
XML-PRC webservice 的初级阶段
SOAP webservice 的高级阶段

但由于 json 的流行,这些东西都不吃香了
只不过因 .Net 和 Java 至今都不肯提供官方的 JSON 操作功能,一时还不能退出历史舞台

1. webservice的定义其实很宽,其实就是一种远程调用技术。
2. 基于身份验证,同域的后端与前段交互可以基于网站本身的用户身份验证,后端与后端的交互验证实现方式就多了
3. 简单的字符串处理等函数(不是基于依赖数据查询的复杂业务的)应该同样在js实现一个,网络问题没办法解决。
4. 基于web是不可能的。

其实楼主想要实现的东西, asp.net的控件早已经实现了.



2.希望能得到更具体的防止站外调用的技术实现细节
3.所以在想办法解决~ 不想js实现的原因就如主楼所说,我个人也不喜欢将同样的功能写2份代码,太别扭了
4.解决这个问题最大的阻碍是php与js语法不通,但nodejs没有,so,后者是最有可能解决的
没接触过asp.net,不知道它实现到了怎样的程度?

在js和php两边各编写一个统一接口,定义一套函数调用的规则,函数名和参数如何传递等等,靠json返回结果

?用??可以?一,但?查的代??是要分??js和php ?套啊



从逻辑上讲我觉得可以共用:传入一个字符串,判断是不是邮箱,返回布尔值,这个布尔值不管前后端都是可以利用的

正常就是该这么做吧!
前端把敏感数据传过来,服务端处理完成返回json数据!
但是普通的字符串处理建议别放服务端,增加了服务端压力!尽量在客户端处理!



嗯,服务器压力确实是提了个醒
所以想寻找更好的办法,在不占用额外请求的前提下,将php中某些功能自动移植到js

做过这么多项目,这类简单验证的代码真不会很多,而且客户端验证也有专用的库,代码不会写很多,重复的代码也不会很多。
像确认用户名存不存在这样的,客户端自己也没办法实现,就不用多考虑了.

所以想寻找更好的办法,在不占用额外请求的前提下,将php中某些功能自动移植到js



除非自己能开发一个编译器

php函数不能放在js中使用,原因很简单:两者的语法规则不一样。
所以,只要两者的语法规则是一样的,那么就可相互调用,比如 nodejs 和 javascript
当然因为两者处于网络的两端,这就有了通讯的问题。好在 nodejs 天生就支持 websock 协议,通讯问题就被内部隐藏了
不过这显然不是 php 版面讨论的问题

微软一直在推耸?客户端的 B/S,所以 vs 中就出现了客户端控件这个东西(只需在服务端书写代码)
它实际上是通过 xmlhttp 组件实现了浏览器与服务器间的通讯
而这种技术就是后来炒的沸沸扬扬的 AJAX 技术

webservice 就是 WEB服务
比较奇怪的是为什么要把它单列出来。普通网站不也是 WEB服务吗?
如果 http://localhost/add.php?a=1&b=2 返回 3,称之为网页
那么 http://localhost/index.php?m=add&a=1&b=2 也返回 3,为何就称之为远程调用了呢
只使用 HTTP 的 get、post 方法的称之为网页
而使用了 HTTP 其他的如 put、delete.... 方法的就称为 REST
其实并没有必要在一些名词上纠结,只要能达到目的就可以了

php 目前提供了
XML-PRC webservice 的初级阶段
SOAP webservice 的高级阶段

但由于 json 的流行,这些东西都不吃香了
只不过因 .Net 和 Java 至今都不肯提供官方的 JSON 操作功能,一时还不能退出历史舞台



 谢谢xu大大,长了不少知识

很感兴趣为什么nodejs会火,是什么原因异军突起?
看到很多人说最大的原因就是javascript,让前端工程师毫不费力向后转
我觉得既然他们是一家子的,想实现点字符串处理,应该用不着网络通讯吧,直接本机搞定
比如html中请求一个function.js文件,实际上是nodejs原生的后端代码直接复制进去的
虽然不是本版内容也很想了解

倒是做第三方接口方面的工作时,碰到过几次soap这个词
因为sdk的存在,也能确定大概的原理,就没去查,原来都是那一套规范性质的东西~
之前做IOS端APP的同事问我,你后台是webservice吗?
我说不是啊,就像普通的网页一样,输出json串而已

nodejs的主要卖点是non-blocking I/O
要说.net java没有操作json的东西,其实php也只有 json_encode, json_decode而已。

php js ?法不同
所以判?代?要????言的。

如果每次都提交到服?器判?,服?器?力就大了。

做过这么多项目,这类简单验证的代码真不会很多,而且客户端验证也有专用的库,代码不会写很多,重复的代码也不会很多。
像确认用户名存不存在这样的,客户端自己也没办法实现,就不用多考虑了.



你说的有道理,但我在想更多的可能性:web开发的升级空间仍然很大

可能性是有的,但不应该局限于代码复制...

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn