Php 外部源变量名中的点和空格转换为下划线

Php 外部源变量名中的点和空格转换为下划线,php,jquery,ajax,codeigniter,Php,Jquery,Ajax,Codeigniter,尝试一点AJAX,我发现我的很多数据都充满了下划线! 文件确认,这是工作的预期。有没有办法将我的表单信息完整地传递给PHP?我使用的是CodeIgniter,所以我的过程看起来像/controller/function/variable, 接收控制器: controller{ function($v=0){#what once was hello world is now hello_world...} } 我无法很好地执行撤消操作,数据可能包含下划线 谢谢, 布兰登 编辑: 我认为这是在转

尝试一点AJAX,我发现我的很多数据都充满了下划线! 文件确认,这是工作的预期。有没有办法将我的表单信息完整地传递给PHP?我使用的是CodeIgniter,所以我的过程看起来像/controller/function/variable, 接收控制器:

controller{
 function($v=0){#what once was hello world is now hello_world...}
}
我无法很好地执行撤消操作,数据可能包含下划线

谢谢, 布兰登

编辑:

我认为这是在转换价值。以下是守则的要点:

<form>
<text input name="tbox"/>
<submit/>
</form>

 ajax_handler(
    v = form.name() + form.val()
    do_ajax('/controller/function/v')
 )

controller(){
   function($v=0){#spaces and periods in v are converted to underscore}
} 

Php只转换变量名而不转换数据。

您确定不能更改字段名吗?

Php不转换数据,只转换变量名。

你确定不能更改字段名吗?

据我所知,不能

正如您所说,PHP正在重命名PHP手册页面上记录的变量:

注:变量中的点和空格 名称将转换为下划线。 例如 成为$\u请求[“a\u b”]


不过,我不知道为什么这会有不同。存储在该变量中的数据保持不变。

据我所知,没有

正如您所说,PHP正在重命名PHP手册页面上记录的变量:

注:变量中的点和空格 名称将转换为下划线。 例如 成为$\u请求[“a\u b”]


不过,我不知道为什么这会有不同。存储在该变量中的数据保持不变。

如果需要保留这些数据,请考虑将其作为其他内容发送,然后
应用程序/x-www-form-urlencoded
多部分/表单数据
。例如,这位优秀的提问者尝试使用JSON,您可以随时解析:

JSON将更容易解析。但是,您可以使用
应用程序/x-www-form-urlencoded
表单(不处理文件上载),
文件获取内容('php://input”)
,然后根据自己的喜好解析字符串

上周,我被告知这也适用于
多部分/表单数据,对此我感到非常高兴


没有看到“'m just using post,用“:”分隔键和值,用“;”分隔对”,显然:

        $.ajax({
                url: '/form/'+n+'/'+v,
                type: 'post',
                contentType: 'text/plain', //<-- add this
$.ajax({
url:'/form/'+n+'/'+v,
键入:“post”,

contentType:'text/plain',//如果您需要保留它们,请考虑将其作为其他内容发送,然后
应用程序/x-www-form-urlencoded
多部分/表单数据
。例如,这位优秀的提问者尝试使用JSON,您可以随意解析:

JSON将更容易解析。但是,您可以使用
应用程序/x-www-form-urlencoded
表单(不处理文件上载),
文件获取内容('php://input”)
,然后根据自己的喜好解析字符串

上周,我被告知这也适用于
多部分/表单数据,对此我感到非常高兴


没有看到“'m just using post,用“:”分隔键和值,用“;”分隔对”,显然:

        $.ajax({
                url: '/form/'+n+'/'+v,
                type: 'post',
                contentType: 'text/plain', //<-- add this
$.ajax({
url:'/form/'+n+'/'+v,
键入:“post”,
contentType:'text/plain',//在上发现了这一点,现在已解决

在特定条件下,通过URI段传递的值中的句点可能会不正确地转换为下划线。为此,您必须使用mod_rewrite,并且您的RewriteRule指令会通过查询字符串传递重写的段。示例:

RewriteRule ^(.*)$ /index.php?/$1 [L]
$config['uri_protocol'] = 'QUERY_STRING';
要解决此问题,必须编辑配置值uri\u协议。默认值为“自动”。必须将其设置为“查询字符串”。示例:

RewriteRule ^(.*)$ /index.php?/$1 [L]
$config['uri_protocol'] = 'QUERY_STRING';
在上发现此问题,现在已解决

在特定条件下,通过URI段传递的值中的句点可能会不正确地转换为下划线。为此,您必须使用mod_rewrite,并且您的RewriteRule指令会通过查询字符串传递重写的段。示例:

RewriteRule ^(.*)$ /index.php?/$1 [L]
$config['uri_protocol'] = 'QUERY_STRING';
要解决此问题,必须编辑配置值uri\u协议。默认值为“自动”。必须将其设置为“查询字符串”。示例:

RewriteRule ^(.*)$ /index.php?/$1 [L]
$config['uri_protocol'] = 'QUERY_STRING';

为什么变量名中首先有点?我没有,只有在值中…我现在看到doc指的是变量名,而不是值,我想知道为什么会发生这种情况?为什么变量名中首先有点?我没有,只有在值中…我现在看到doc指的是变量名,而不是值,想知道为什么会发生这种情况?它似乎正在转换传递给控制器的所有值。它正在转换传递给控制器的所有值。它似乎正在转换传递给控制器的所有值。它正在转换传递给我的所有表单输入。感谢您的回复…我有点困惑…如果我像上面那样使用AJAX传递字符串,它会将此字符串视为va变量名?我只是用post,用“:”分隔键和值,用“;”分隔对,在php端做了一个解析器来读取数据。太棒了,谢谢。是用上面添加的代码进行解析的(实际上是一样的).Hmm,添加了contentType,但它仍在回写下划线。在发送它之前提醒它会显示空格。我完全不知所措。呃,没关系,在重新阅读了大约一小时前添加的代码后,似乎你实际上没有发布任何内容,整个字符串显然都会出现在URL中(如果我正确阅读javascript的话)这意味着代码点火器在它上面做了一些伏都教,我不知道CODEIGITITER:考虑一下你当前问题的答案,只在你想保存发布数据时才有关联。不过在你的javascript中,它应该是urlencoded。Wrikken,再次感谢你的回复。原来是Codeigniter,下面添加的解决方案。我只是假设它是PHP,因为我在文档中找到了那个位,我认为这太巧合了。感谢你的回复…我有点困惑…如果我使用AJAX l传递字符串艾克