【问题标题】:$.ajax does not read echo from .php$.ajax 不从 .php 读取回显
【发布时间】:2015-06-25 08:08:30
【问题描述】:

我正在尝试让 ajax 读取并将 php 文件的回显发布到搜索建议框中,但它似乎不起作用。有什么建议哪里出错了?

代码更新为没有简单错误,但仍然没有给出想要的结果

$(document).ready(function(){
    var left = $('#start').position().left;
    var top = $('#start').position().top;
    var width = $('#start').width();

    $("#suggestionbox").css("left", left+40).css("top", top+60).css("width", width);

    $("#start").keyup(function(){
    var value =  $("#start").val();
    if(value != ''){
            $.ajax(
                {
            type: 'POST',
            url: 'search.php',
            data: {value: value},
            dataType: 'html',
            success: function(data) { 
                debugger;  
                $("#suggestionbox").html(data);
                alert(data); 
                }, //success    
            error: function(){
                alert("nothing");
            } //error
            }); //$.post
        } //if
        }); //keyup
}); //ready

php

<?php echo 'Working!'; ?>

html文件中的form和div

<form class="inputForm" action="#">
<fieldset>
<input name='start' id="start" class="inputStart" type="text"  placeholder="Start" onfocus="(this.value == 'Start') && (this.value = '')" onblur="if (this.value == '') {this.value = 'Start';}" onfocus="if (this.value == 'Start') {this.value = '';}" />
<input name='end' id="End" class="inputFinish" type="text" placeholder="End" onfocus="(this.value == 'End') && (this.value = '')" onblur="if (this.value == '') {this.value = 'End';}" />
 <select name="count">
<option value="1">1</option>
</select>
<input class="inputDate" type="text" data-type="date" id="datepicker" value="date" />
<input class="searchbutton" type="submit" value=" " />
</fieldset>
</form> 

<div id="suggestionbox">
</div>

注意:php文件和js在同一个文件夹中。

更新:

	$("#start").keyup(function(){
  	var value =  $("#start").val();
	if(value != ''){
			$.ajax(
				{
			type: 'POST',
			url: 'search.php',
			data: {value: value},
			dataType: 'html', 
			success: function(data) { 
				debugger;
				$("#suggestionbox").html(data);
				alert(data); 
				}, //success	
			error: function(){
				alert('error');
			} //error
			}); //$.ajax
		} //if
     	}); //keyup

上面显示(修复)的代码没有在#suggestionbox 字段中添加任何内容,并且警报输出是 php 文件的完整代码:

<?php 
echo 'Working!'; 
?>

【问题讨论】:

  • 它不起作用,因为您尝试了准备好文档。在文档 .ready 之后写入 $('.searchbutton').click(function(){ 并将所有代码包装在其中。然后单击按钮尝试。
  • 您也错过了 ajax 调用中的 dataType:html
  • 2 个其他拼写错误:在 Ajax 调用中应该是 type: 'POST',在你的日期输入中应该是 data-type="date"

标签: php jquery ajax forms echo


【解决方案1】:

表单中的输入字段没有名称属性。

<form class="inputForm" action="#">
<fieldset>
<input name='start' id="start" class="inputStart" type="text"  placeholder="Start" onfocus="(this.value == 'Start') && (this.value = '')" onblur="if (this.value == '') {this.value = 'Start';}" onfocus="if (this.value == 'Start') {this.value = '';}" />
<input name='ciel' id="ciel" class="inputFinish" type="text" placeholder="End" onfocus="(this.value == 'End') && (this.value = '')" onblur="if (this.value == '') {this.value = 'End';}" />
 <select name="count">
<option value="1">1</option>
</select>
<input class="inputDate" type="text" dtat-type="date" id="datepicker" value="date" />
<input class="searchbutton" type="submit" value=" " />
</fieldset>
</form> 

我不确定 jQuery,但看起来那里有一个错字 - 你使用 typo:'POST' - 这不应该是 type:'POST' 吗?

【讨论】:

  • 还有 alert.("nothing"); - 警报后的点。看起来像醉编码:)
  • 是的,错字就在那里。无论如何,修复后它并没有改变行为 - 字段#suggestionbox 没有得到 php 的 echo 中给出的值
【解决方案2】:

您是否在控制台中查看过任何 Javascript 错误?在任何情况下,这都是有效的(这几乎是你上面的代码):http://jsfiddle.net/5jzskmyg/1/

我看到您现在已将代码放入 $(document).ready() 回调中,因此我建议您放入日志语句以确保正确加载所有内容(也许脚本本身未加载)。例如:

console.log(1);

$(document).ready(function(){
    console.log(2);

    var left = $('#start').position().left;
    var top = $('#start').position().top;
    var width = $('#start').width();

    $("#suggestionbox").css("left", left+40).css("top", top+60).css("width", width);

    $("#start").keyup(function(){
        console.log(3);

        var value =  $("#start").val();
        if(value != ''){
            $.ajax(
            {
                type: 'POST',
                url: 'search.php',
                data: {value: value},
                dataType: 'html', 
                success: function(data) { 
                    console.log(4);

                    debugger;
                    $("#suggestionbox").html(data);
                    alert(data); 
                    }, //success    
                error: function(){
                    alert('error');
                } //error
            }); //$.ajax
        } //if
    }); //keyup
}); //ready

【讨论】:

  • 它的目的是作为 FireBug 的断点。无论如何,如果我删除它,它不会改变最终结果中的任何内容。建议框仍然是空的。
  • 我更新了我的答案...试试那些记录语句,如果您仍然不确定问题,请告诉我们记录了哪些数字。
  • 我试过了,所有记录数字的地方都很好地通过了。不能连接到php文件吗?正如我之前已经更新的那样,警报正在从文件中返回完整的 php 代码,包括
  • 啊,我错过了......是的,在这种情况下,您的服务器没有正确解析 PHP 文件。如果您直接在浏览器中访问 search.php 会发生什么?服务器是否运行 Apache,如果是,您是否检查过 PHP 模块是否正确加载?
  • 这是一个 php 模块无法正常工作。绝对错过了。谢谢马特!
【解决方案3】:

最后,最令人烦恼的事情是 PHP 模块。以前不能正常工作,但现在已修复,运行良好。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-11-01
    • 2013-02-14
    • 2016-08-23
    • 2021-11-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多