Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/285.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 来自JQuery.ajax()调用的空白响应消息长度为13个字符?_Php_Jquery - Fatal编程技术网

Php 来自JQuery.ajax()调用的空白响应消息长度为13个字符?

Php 来自JQuery.ajax()调用的空白响应消息长度为13个字符?,php,jquery,Php,Jquery,我使用JQUERY.ajax使用PHP将序列化表单数据发送到MySQL。如果处理数据时出现问题,被调用的后端PHP将返回一条消息。然后,我的Javascript函数检查返回的消息,然后再决定下一步做什么。如果消息长度为“0”,则post成功并且可以继续。如果消息长度大于“0”,则表单处理中一定发生了错误,并将其捕获以进行处理。然而,在测试时,我发现成功处理表单数据后,返回的消息大小为13,即使消息本身是空的 下面是我使用的javascript函数。我已经对它进行了修改,以测试超过13个字符的消息

我使用JQUERY.ajax使用PHP将序列化表单数据发送到MySQL。如果处理数据时出现问题,被调用的后端PHP将返回一条消息。然后,我的Javascript函数检查返回的消息,然后再决定下一步做什么。如果消息长度为“0”,则post成功并且可以继续。如果消息长度大于“0”,则表单处理中一定发生了错误,并将其捕获以进行处理。然而,在测试时,我发现成功处理表单数据后,返回的消息大小为13,即使消息本身是空的

下面是我使用的javascript函数。我已经对它进行了修改,以测试超过13个字符的消息长度,现在可以正常工作了。我只是好奇为什么一个空白回答的长度是13个字符。忽略复杂的.load语句,它们只是根据是否检测到错误消息将用户返回到不同的页面

$("button#update").click(function() {
    var cat = $("select#cat_select").val();
    var dataString = $("form#project_update").serialize();
      $.ajax({
      type: "POST",
      url: "process.php",
      data: dataString,
      dataType: 'text', 
      success: function( msg ) {
        console.log('msg is ' + msg);
        length = msg.length;
        console.log('length is ' + length);
        if (length > 13) { // no idea why a blank msg has a length of 13!!
          alert(msg);
          $("#main").load('?app=$app&func=$func&sub=ajax&ajaxSub=edit_project&cat=' + cat + '&proj_id=' + $proj_id).fadeIn('fast');
        }
        else {
          $("#main").load('?app=$app&func=$func&sub=ajax&ajaxSub=project_detail&cat=' + cat + '&proj_id=' + $proj_id).fadeIn('fast');
        }
      }
    });
    return false;
}); 
而不是

length = msg.length;
试一试

length = msg.replace(/\s/g,'').length
笔记 但是您应该确保标记中没有空格或换行符,如果您删除它们,我会更好。

而不是

length = msg.length;
试一试

length = msg.replace(/\s/g,'').length
笔记

但是您应该确保标记内没有空格或换行符,如果您删除它们,我会更好。

检查标记外的硬编码空格。我想脚本是通过ajax调用自己的,对吗?

检查标记外的硬编码空格。我想脚本是通过ajax调用自己的,对吗?

可能在某些情况下,由于php源代码上的一些换行符,您的响应会打印一些空白字符和/或换行符,它们仅为13字节。在控制台/警报中究竟记录了什么?注意:使用console.logmsg而不是console.log'string'+msgma确保前后都没有空格,并且整个代码应该在一个标记中,没有任何空白回音。在某些情况下,您的响应可能会打印一些空白字符和/或换行符,因为php源代码上有一些换行符,它们只有13字节是否准确地登录到控制台/发出警报?注意:使用console.logmsg而不是console.log'string'+msgma确保前后没有空格,并且整个代码应该在一个标记中,没有任何空白的echost。成功的post现在将返回预期的消息长度0。谢谢。我不喜欢这个解决方案。即使它有效,我们也应该解决这些空间的来源,而不是详细说明一个解决方案,事实上,这是对一个不起作用的代码的攻击。如果你认为空间不应该在那里,它们就不应该在那里…@首先要解决的是颅问题。但我在解决方案中添加了注释。这绝对是OP的选择,我认为你不应该把评论留给我。同意,你是对的。在重新考虑你的公平观点后取消我的反对票。这很有效。成功的post现在将返回预期的消息长度0。谢谢。我不喜欢这个解决方案。即使它有效,我们也应该解决这些空间的来源,而不是详细说明一个解决方案,事实上,这是对一个不起作用的代码的攻击。如果你认为空间不应该在那里,它们就不应该在那里…@首先要解决的是颅问题。但我在解决方案中添加了注释。这绝对是OP的选择,我认为你不应该把评论留给我。同意,你是对的。在重新考虑你的观点后,取消我的否决票。正确。PHP脚本调用自身,其他URL参数将其指向要执行的代码的相关部分。但是,以这种方式编码的脚本中存在不干净代码的风险非常高。您必须检查空格的来源,以及PHP代码之外的位。在AJAX页面中,很容易在标记之外留下尾随空格或换行符。我同意您的看法,并将调查额外空格的来源,现在我知道是额外的空格首先导致了问题。我已经使用codepardox的答案来证明问题所在,并将在适当的时候整理生成这些额外空格的代码。谢谢你的反馈。正确。PHP脚本调用自身,其他URL参数将其指向要执行的代码的相关部分。但是,以这种方式编码的脚本中存在不干净代码的风险非常高。您必须检查空格的来源,以及PHP代码之外的位。在AJAX页面中,很容易在标记之外留下尾随空格或换行符。我同意您的看法,并将调查额外空格的来源,现在我知道是额外的空格首先导致了问题。我已经使用codepardox的答案来证明问题所在,并将在适当的时候整理生成这些额外空格的代码。Tha 谢谢你的反馈。