7
回答
php实现向json文件中写入
利用AWS快速构建适用于生产的无服务器应用程序,免费试用12个月>>>   

环境是PHP用的的smarty技术,现在有个需求再点击一个按钮时要向json中写入内容,我想到的是:再点击时调用jQuery中的ajax来调用php在php中用file_put_contents('/joy/zdxs20140430/voteNum.json','sdasdfsdf');来向json写入。

我是做java的,刚开始接触php,绝对的php菜鸟,所以现在的问题来了,在我用ajax向php发送请求时能找到这个文件,但是肯定没有执行php中的代码,不知道是不是这个php用了smarty的缘故还是其他原因?

另外,不管是其他方法还是这个方法,大神们帮帮忙吧……

举报
沼届
发帖于4年前 7回/3K+阅
共有7个答案 最后回答: 4年前

这个跟smarty 没关系的把。

首先确定ajax请求成功了没,ajax返回结果是什么。

--- 共有 4 条评论 ---
沼届回复 @我饿了 : 不知道在这里回复怎么写,就加了个评论在下边@了你,麻烦看一下了。大神..... 4年前 回复
jqnphy回复 @沼届 : 得到的是PHP源码?你用短标签了?你单纯执行一个那个php文件,看看效果。 4年前 回复
沼届另外,用smarty的话,导致前台我能写html和js代码都在XXXX.tpl文件中。在这些文件中写php代码不能起作用吗? 4年前 回复
沼届应该是请求发送成功了,我在php页面中echo 'asdafas';。在请求页面中alert(data)。得到的是php的源码 4年前 回复

smarty只是前端模板,和这个没关系

设计上应该是点击按钮触发事件,事件绑定jquery的ajax,向xxx.php提交一个post请求,参数可以为

method: add

data:'sda……'

然后那个php页面找到json文件后修改之,再返回成功标记,前端再提示,over。

写文件要看是不是有权限,在linux上尤其常见

再个用file_put_contents直接put进去用法不对吧

而且为啥要有这种需求要点击按钮后更新json文件,直接更新数据库,用户请求再生成json不好吗

--- 共有 2 条评论 ---
沼届有没有好的建议怎么来完成这样的功能 4年前 回复
沼届这个项目的框架式前台php,后台用的java,更改数据库的话就要在后台更改,很是麻烦。而且这个功能应该只有这个地方用,在php能完成的情况下是在不愿意在后台写 4年前 回复

@我饿了 在php_ajax.tpl中内容

<?php

echo 'asdfassdfa';

?>
在web.tpl

function vote(type){
		$("#"+type).text(parseInt($("#"+type).text()) +1);
		var my_data = "qiantai";
		  $.ajax({
	         url: "/joy/zdxs20140430/php_ajax",  
	         type: "POST",
	         data:{trans_data:my_data},
	         //dataType: "json",
	         error: function(){  
	             alert('Error loading XML document');  
	         },  
	         success: function(data){//如果调用php成功    
	         alert(data);
	         }
	     });
	}
alert的结果


简单一点好了:

php_ajax.tpl 这个文件 改成 php_ajax.php

ajax  请求地址url: "/joy/zdxs20140430/php_ajax",

改成 url: "/joy/zdxs20140430/php_ajax.php", 

看看结果。

--- 共有 3 条评论 ---
jqnphy回复 @沼届 : 那我实在不懂了。你可以看看其他人说的。 4年前 回复
沼届回复 @我饿了 : 这个试过,可是会报找不到文件。查了一下源码,发现时smarty中设定路径中有拼成.tpl。 4年前 回复
jqnphy@沼届 看一下。模板文件使用tpl 是没有问题的,但是php文件还是需要php 结尾,当然啦,你也可是设置解析其他格式的后缀的php文件。 4年前 回复

这其实是阉割过的php

url对应被java处理过,也可能限制过php的功能

如果在项目里php被限制为前端模板,但是要做文件修改级功能肯定不行

php_ajax.tpl 里弄个array,生成一个json文件看能否成功

如果这可以,那么根据请求参数,显示一段话看能否成功

这两个可以,那么就可以提交请求后,php读取json对应数据(数据库或者json文件里),加上请求的

顶部