jQuery / Ajax PHP POST调用

我发布的表单包含以下内容:</ p>

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

}
});
}
</ code > </ pre>

HTML </ p>

 &lt; input class =“buttondb4 white2 large”type =“text”value =“”id =“  enterLicence“/&gt; 
&lt; input type =”hidden“name =”licenceRegion“id =”licenceRegion“value =”“/&gt;

&lt; input type =“hidden”name =“fname”id =“fname”value =“First”/&gt;

&lt; input type =“hidden”name =“lname”id =“lname”value =“Last”/&gt;
</ code> </ pre>

和我的PHP:</ p>

  if($ _POST){
$ lnum = noescape($ _ POST ['lnum']);
$ fname = noescape($ _ POST ['fname']);

$ lname = noescape($ _ POST ['lname']);
$ region = noescape($ _ POST ['region']);
$ flag = noescape($ _ POST ['flag']);

//这里的mysql查询

}
</ code> </ pre>

但是当它发布时,它不会检索任何发布的数据(发布的值是 空白)</ p>

为什么不提取数据? 我错过了什么? 我做错了什么?</ p>

不幸的是我不能发布整个脚本/页面,因为它是一个客户的私人项目,虽然我认为我提供了足够的信息,我想要的是什么 做。</ p>
</ div>

展开原文

原文

I am posting a form with the following:

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 ) {

    }
});
}

The 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" />

and my PHP:

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

}

But when its posted, it is not retrieving any of the posted data (the posted values are blank)

Why is it not pulling the data? What am I missing? What have I done wrong?

Unfortunately I cannot post the entire script/page due to it being a private project for a client although I think I have provided enough information for what I am trying to do.

dongzhen7108
dongzhen7108 在Firebug中弹出的唯一内容是:不应使用keydown事件的'charCode'属性。价值毫无意义。
接近 10 年之前 回复
doupingmao1903
doupingmao1903 不确定这是否有帮助:stackoverflow.com/questions/4076686/...
接近 10 年之前 回复
douweng7233
douweng7233 你觉得怎么样?在脚本的其他部分调用输入字段工作正常,我只是遇到了这个特定部分的问题,因此我只发布了这么多信息。
接近 10 年之前 回复
dsh1956
dsh1956 使用Firebug/Chrome开发工具检查您的发布请求
接近 10 年之前 回复
dqyq88053
dqyq88053 您尚未提供任何信息。问题的根源似乎是您实际输出数据的位置,并且您没有显示该部分代码。
接近 10 年之前 回复

7个回答



在SO上阅读</ p>

您需要等待函数的返回:</ p>

  onSubmit =“return sendData()”
</ code> </ pre>

否则表格将立即提交并且不会等到 数据被更改。</ p>

在函数内部替换</ p>

  document.data.submit(); 
</ code> </ pre>

用这个:</ p>

  return true; 
</ code> </ pre>

评论中发布的链接 上面</ p>
</ div>

展开原文

原文

Read this on SO

You need to wait for the return of the function:

onSubmit="return sendData()"

Otherwise the form will be submitted immediatly and does'nt wait till data is changed.

inside the function replace this

document.data.submit();

with this:

return true;

Link posted in comment above



HTML </ p>

 &lt; script type =“text / javascript”&gt; \  n $(document).ready(function(){
...
if(flag){
$ .ajax({
url:'submit_licence.php',
dataType:'json',\ n类型:'POST',
data:'flag ='+ flag +'&amp;'+ $('#someId')。serialize(),
success:function(data){

} \ n});
}
});

&lt; / script&gt;
...
&lt; form id ='someId'&gt;
...
&lt; input class =“buttondb4 white2 large”type =“text”value =“”id = “enterLicence”/&gt;
&lt; input type =“hidden”name =“licenceRegion”id =“licenceRegion”value =“”/&gt;

&lt; input type =“hidden”name =“fname”id =“fname”value =“First”/&gt;

&lt; input type =“hidden”name =“lname”id =“lname”value =“Last”/&gt;
&lt; / form&gt;
</ code> </ pre>

检查数据是否已发送,“print_r($ _ POST);”,这应该有效</ p>

  // 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
...
echo json_encode($ result);
}
</ code> </ pre>
</ div>

展开原文

原文

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>

checks whether the data has been sent, " print_r($_POST); " , and this should work

 //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);
}



当json响应格式错误时,jQuery ajax调用无提示失败。</ p>

确保使用 这种格式为json:</ p>

  {“firstName”:“John”,“lastName”:“Smith”,“age”:25} 
</ code> </ pre>

不要使用单引号。</ p>

PHP的 json_encode()</ code> 正确完成。</ p>

要进一步调试错误,请使用 complete(XMLHttpRequest) ,textStatus)</ code>回调。 </ p>

第二个参数是错误类型。 (参见 jQuery.ajax )</ p>
</ div>

展开原文

原文

jQuery ajax calls fail silently when the json response is malformed.

Make sure that you use this format for json:

{"firstName": "John", "lastName": "Smith", "age": 25}

Do not use single quotes.

PHP's json_encode() does it correctly.

To further debug the error use a complete(XMLHttpRequest, textStatus) callback.

The second argument is the error type. (see jQuery.ajax)



使用适用于Firefox的 Firebug 使用Ajax和没有Ajax检查HTTP头(只需设置&lt; form method =“post”...&gt; </ code>并添加&lt; input type =“submit”&gt; </ 代码>)。</ p>
</ div>

展开原文

原文

Use Firebug for Firefox to inspect the HTTP headers using Ajax and without Ajax (just set <form method="post"...> and add a <input type="submit">).

dongrong9938
dongrong9938 你使用Jquery发送的是同一个东西吗?
接近 10 年之前 回复
dsd57259
dsd57259 我做了这个,它返回:Parametersapplication / x-www-form-urlencoded flag 2 fname First lname Last lnum 1 region VIC Source flag = 2&region = VIC&lnum = 1&fname = First&lname = Last
接近 10 年之前 回复



相对较新的jQuery Ajax,我不确定,但这可能是一个原因吗?</ p>


data(Object,String):
要发送到服务器的数据。 它被转换为查询字符串,如果不是
已经是字符串。 它被附加到
url for GET-requests。</ p>
</ blockquote>

也许因为这不是GET,数据是“掉下来的”?</ p> \ n </ div>

展开原文

原文

Being relatively new to jQuery Ajax, Im not sure, but could this be a reason?

data (Object, String): Data to be sent to the server. It is converted to a query string, if not already a string. It's appended to the url for GET-requests.

Perhaps since this is not a GET, the data is 'falling off' ?

dqrq93879
dqrq93879 - 感谢您的解释/澄清!
接近 10 年之前 回复
du997562
du997562 它应该工作,因为类型是POST,我尝试过它,但它没有任何区别。
接近 10 年之前 回复
duanbi7204
duanbi7204 不,他正确使用数据。 文档的含义是,对于所有其他请求类型,它作为正文发送,除了对于GET,它附加到URL。
接近 10 年之前 回复



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

所以,试试这些简单的事情:</ p>



  • 在事件处理程序中,使用 event.preventDefault 来防止默认浏览器行为< / li>
  • 使用Firebug查看是否正在向服务器发出请求,并检查请求中的POST数据(如果有人发送)</ li>
    </ ul> \ n

    看到你没有真正提供关于如何以及在何处调用此代码的足够信息,我只能猜测问题是什么。 </ p>

    希望这有用:)</ p>
    </ div>

展开原文

原文

You haven't provided nearly enough info on this question. How do you trigger the ajax request? If it happens inside a submit()-handler, you'll need to prevent the default behavior using event.preventDefault() or the request will be aborted by the default browser behavior. Are you sure you actually get inside the statement at all? This can be checked using Firebug to see if a request is even made, like many others have suggested.

So, try these simple things:

  • In the event handler, use event.preventDefault to prevent default browser behavior
  • Use Firebug to see if a request is being made to the server at all, and check the POST-data in the request (if one is sent)

Seeing as you're not really supplying enough info on how and where you call this code, I can only make guesses on what the problem is.

Hope this was helpful :)



你确认你在AJAX中传递的值有值吗? 尝试一个简单的警报和var来查看其中的内容。</ p>

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

展开原文

原文

Hvae you confirmed the values you pass in AJAX have values? Try a simple alert and the var to see what is in it.

If the alert shows a value then change datatype to text and see if it passes data. DONT USE THIS FOR FINAL SOLUTION, just debugging

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问
相关内容推荐