Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/85.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
jQuery/Ajax PHP POST调用_Php_Jquery_Ajax - Fatal编程技术网

jQuery/Ajax PHP POST调用

jQuery/Ajax PHP POST调用,php,jquery,ajax,Php,Jquery,Ajax,我正在发布一份包含以下内容的表格: if ( flag ) { jQuery.ajax({ url: 'submit_licence.php', dataType: 'json', type: 'POST', data: 'flag=' + flag + '&region=' + jQuery('#licenceRegion').val() + '&lnum=' + jQuery('#enterLicence').val() + '&fna

我正在发布一份包含以下内容的表格:

if ( flag ) {
jQuery.ajax({
    url: 'submit_licence.php',
    dataType: 'json',
    type: 'POST',
    data: 'flag=' + flag + '&region=' + jQuery('#licenceRegion').val() + '&lnum=' + jQuery('#enterLicence').val() + '&fname=' + jQuery('#fname').val() + '&lname=' + jQuery('#lname').val(),
    success: function( data ) {

    }
});
}
HTML

<input class="buttondb4 white2 large" type="text" value=" " id="enterLicence" />
<input type="hidden" name="licenceRegion" id="licenceRegion" value="" /> 
<input type="hidden" name="fname" id="fname" value="First" /> 
<input type="hidden" name="lname" id="lname" value="Last" />
但是当它被发布时,它不会检索任何发布的数据(发布的值为空)

为什么它不提取数据?我错过了什么?我做错了什么


不幸的是,我无法发布整个脚本/页面,因为它是客户的私人项目,尽管我认为我已经提供了足够的信息来完成我的工作。

对于jQuery Ajax来说,我不确定,但这可能是一个原因吗

数据(对象、字符串): 要发送到服务器的数据。它是 已转换为查询字符串(如果不是) 已经是一串了。它被附加到 获取请求的url


也许因为这不是一个GET,所以数据正在“脱落”?

当json响应格式错误时,jQuery ajax调用会无声地失败

确保对json使用以下格式:

{"firstName": "John", "lastName": "Smith", "age": 25}
不要使用单引号

PHP的操作是正确的

要进一步调试错误,请使用
complete(XMLHttpRequest,textStatus)
回调

第二个参数是错误类型。(请参阅)

请仔细阅读

您需要等待函数返回:

onSubmit="return sendData()"
否则表格将立即提交,而不会等到数据更改后才提交

在函数内部替换此

document.data.submit();
为此:

return true;
上面评论中发布的链接

HTML

<script type="text/javascript">
   $(document).ready(function(){
     ...
     if ( flag ) {
         $.ajax({
            url: 'submit_licence.php',
            dataType: 'json',
            type: 'POST',
            data: 'flag=' + flag + '&' + $('#someId').serialize(),
            success: function( data ) {

            }
         });
     }
   }); 
</script>
...
<form id='someId'>
  ...
  <input class="buttondb4 white2 large" type="text" value=" " id="enterLicence" />
  <input type="hidden" name="licenceRegion" id="licenceRegion" value="" /> 
  <input type="hidden" name="fname" id="fname" value="First" /> 
  <input type="hidden" name="lname" id="lname" value="Last" />
</form>

使用Firefox检查使用Ajax和不使用Ajax的HTTP头(只需设置
并添加
)。

您还没有提供足够的有关此问题的信息。如何触发ajax请求?如果它发生在submit()-处理程序中,则需要使用event.preventDefault()阻止默认行为,否则请求将被默认浏览器行为中止。你确定你真的进入了这个声明吗?这可以使用Firebug进行检查,以查看是否像许多其他人建议的那样提出了请求

那么,试试这些简单的事情:

  • 在事件处理程序中,用于防止默认浏览器行为
  • 使用Firebug查看是否向服务器发出了请求,并检查请求中的POST数据(如果已发送)
鉴于您没有提供足够的信息来说明如何以及在何处调用此代码,我只能猜测问题出在何处


希望这是有帮助的:)

Hvae您确认在AJAX中传递的值有值吗?尝试一个简单的警报和var来查看其中的内容


如果警报显示值,则将数据类型更改为文本,并查看它是否传递数据。不要将此用于最终解决方案,只需调试

您尚未提供任何信息。问题的根源似乎是您实际输出数据的位置,而您没有显示代码的这一部分。请使用Firebug/Chrome dev toolsHow检查您的post请求,您认为如何?在脚本的其他部分调用输入字段很好,我只是在这个特定部分遇到问题,因此我只发布了这么多信息。不确定这是否会有帮助:Firebug中弹出的唯一一件事是:不应该使用keydown事件的“charCode”属性。这个值没有意义。不,他使用的数据是正确的。文档的意思是,对于所有其他请求类型,它都作为正文发送,除了GET,它被附加到URL。它应该可以作为POST类型工作,我已经尝试过任何一种方法,但没有任何区别。@Matti-感谢您的解释/澄清!我已经这样做了,它返回:Parametersapplication/x-www-form-urlencoded flag 2 fname First lname Last lnum 1 region VIC Source flag=2®ion=VIC&lnum=1&fname=First&lname=Last,这与使用Jquery发送的内容相同吗?
<script type="text/javascript">
   $(document).ready(function(){
     ...
     if ( flag ) {
         $.ajax({
            url: 'submit_licence.php',
            dataType: 'json',
            type: 'POST',
            data: 'flag=' + flag + '&' + $('#someId').serialize(),
            success: function( data ) {

            }
         });
     }
   }); 
</script>
...
<form id='someId'>
  ...
  <input class="buttondb4 white2 large" type="text" value=" " id="enterLicence" />
  <input type="hidden" name="licenceRegion" id="licenceRegion" value="" /> 
  <input type="hidden" name="fname" id="fname" value="First" /> 
  <input type="hidden" name="lname" id="lname" value="Last" />
</form>
 //print_r($_POST);
 if ($_POST){
  $lnum     = noescape($_POST['lnum']);
  $fname    = noescape($_POST['fname']);
  $lname    = noescape($_POST['lname']);
  $region   = noescape($_POST['region']);
  $flag     = noescape($_POST['flag']);  

  //mysql query here
  ...
  echo json_encode($result);
}