> 백엔드 개발 > PHP 튜토리얼 > jQuery 中的ajax在没有获取php返回的值时,原来html的标签的值会是空白,怎么解决?

jQuery 中的ajax在没有获取php返回的值时,原来html的标签的值会是空白,怎么解决?

WBOY
풀어 주다: 2016-06-06 20:31:18
원래의
1081명이 탐색했습니다.

先在用手机,所以无图,只能口述

a.html

<code><a id="test">no</a>
<a id="aa">1</a>
</code>
로그인 후 복사
로그인 후 복사

b.js
ajax传值给b.php

<code>var aa = $('#aa').html();   
.ajax({
    url:"a.php",
    type:"POST",
    data{test:test},
    success:function(data){ $('#test').html(data)} //ajax中success返回并改变test的值
    error:function(){}
});
</code>
로그인 후 복사
로그인 후 복사

c.php
接收到,并返回

<code>if(isset($_POST['aa']))
{
    echo "<script>alert('success');<script>";
    echo "yes";
}
else
{
     echo "<script>alert('error');<script>";
}
</script></code>
로그인 후 복사
로그인 후 복사

问题来了,如果php判断aa不存在的时候,弹出提示框error,那么这里的a.html的test标签的值就会有任何值,不会显示原来的值,而是空白。如何让即使错误也会显示原来的值

回复内容:

先在用手机,所以无图,只能口述

a.html

<code><a id="test">no</a>
<a id="aa">1</a>
</code>
로그인 후 복사
로그인 후 복사

b.js
ajax传值给b.php

<code>var aa = $('#aa').html();   
.ajax({
    url:"a.php",
    type:"POST",
    data{test:test},
    success:function(data){ $('#test').html(data)} //ajax中success返回并改变test的值
    error:function(){}
});
</code>
로그인 후 복사
로그인 후 복사

c.php
接收到,并返回

<code>if(isset($_POST['aa']))
{
    echo "<script>alert('success');<script>";
    echo "yes";
}
else
{
     echo "<script>alert('error');<script>";
}
</script></code>
로그인 후 복사
로그인 후 복사

问题来了,如果php判断aa不存在的时候,弹出提示框error,那么这里的a.html的test标签的值就会有任何值,不会显示原来的值,而是空白。如何让即使错误也会显示原来的值

一般我们是后端返回一个json格式的串,然后跟据成功或失败返回的状态不一样,再然后跟据这个返回状态去显示test标签的内容,如果成功替换,如果失败不做操作~~

success 的 function里面 判断下data是否为空 if(data.length==0) {return false}

php中理论上不应该包含这样的html代码,通常的做法是php中返回状态码来表示结果,如果失败返回错误状态码,成功则返回成功状态码以及要输出的内容,js再根据状态码来处理结果。这个状态就取决于你如何去定义了。

首先,从结果中载入<script>是一个非常恶心的行为,虽然你实现了这个效果。其次,即使你这样去做,起码在.html()之前作一个判断,你让php去判断,而不是js去判断和操作,这种思路真的很醉。</script>

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿