gpt4 book ai didi

javascript - json从php到jquery相同的功能

转载 作者:行者123 更新时间:2023-11-28 00:08:18 25 4
gpt4 key购买 nike

我正在使用 Codeigniter。

我需要访问两次 php 函数,但第一次我不必回显 json_encode 数组......我应该在第二次从 js 文件调用它时回显它。我该怎么做?

所以,php 文件:

function filter(){
if (function call is not from js file ) {
//using $_POST variable to get info from the form
dont echo json
}elseif (function call is from the js file) {
echo json_encode($data);
//but $data should be $_POST info too, but in this case $_POST WOULD
//BE EMPTY and I'm sending no data to ajax
}
}

来自js文件:

$.ajax({        
type: "GET",
url: "filter",
dataType: 'json',

success: function(data){
alert(data); },

error: function(data){
alert('error'); }

最佳答案

您可以进行一些搜索,找到许多不同的选项来使用 PHP 检测 AJAX 请求。例如:

一旦确定它来自 AJAX,您就可以传递像 pass 这样的参数,并根据哪个 pass 为其分配 1 或 2。不过仍然很老套。

真正的问题是这个函数做得太多了。如果两个函数做不同的事情,那么你应该有两个不同的函数。当您开始引入这样的条件时,您就违反了单一职责原则(SOLID 的一部分),并要求将来出现问题。

但是,为了完整起见,您可以执行类似的操作,并且在大多数情况下它应该检测 AJAX 请求:

if(!empty($_SERVER['HTTP_X_REQUESTED_WITH']) && strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest') {
// This is PROBABLY an AJAX request
if ($_POST['pass'] == 1) {
// First Pass
} else if ($_POST['pass'] == 2) {
// Second pass
}
}

注意:这可以由客户端操纵,因此不要依赖它来驱动任何需要安全的东西。顺便说一下,我并不是提倡这种方法——你真的应该分开关注。

关于javascript - json从php到jquery相同的功能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31142982/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com