jquery $.ajax+php使用jsonp处理数据时,前端success :function无法获取服务器返回数据

点击查看全文http://www.3qphp.com/web/javascript/46.html

说明:下面描述的过程前端使用的jQuery 前提下完成的

$.ajax+php开发应用时,由于某些原因,ajax必须使用跨域操作处理数据(jsonp)发现

success:function(msg){

alert(msg);

}

不执行,但是ajax请求php的数据在后端是处理成功的

一、原本的错误代码如下:

前端代码

             $.ajax({
                  type: "GET",
                  url: "http://XXX/mobile/maddress.php?act=address_default&address_id=" +address_id,
                  dataType: "jsonp",         //注意这里是jsonp而不是json
                  success:function(msg){
                      alert(msg.msg);
                  }
              });

后端php代码:

elseif($act=='address_default'){
    $address_id = isset($_GET['address_id'])?$_GET['address_id']:0;
    if(!empty($address_id)){
        $sql = "update" .$ecs->table('users')." set address_id= ".$address_id." where user_id= ".$user_id;
        $result = $db->query($sql);
        if($result){
            $data['msg']=1;
            echo json_encode($data);
        }
    }

}

点击查看全文http://www.3qphp.com/web/javascript/46.html

### 使用说明 `$.ajax` 是 jQuery 中用于执行异步 HTTP 请求的核心方法,其基本语法为 `$.ajax(options)`,其中 `options` 是一个包含请求配置的对象。在代码 `$.ajax({url:"testTest?num=1",success:function(result)})` 中,主要涉及到两个配置项: - **`url`**:指定请求的服务器端地址。这里的 `"testTest?num=1"` 表示向 `testTest` 这个资源发送请求,并且携带了一个参数 `num`,其值为 `1`。例如在引用[2]中,`url:'./server/demo.php'` 也是指定了请求的地址,只不过使用了相对路径,并且可以通过 `data` 选项传递更多参数 [^2]。 - **`success`**:这是一个回调函数,当请求成功完成会被调用。`result` 是服务器返回数据。在引用[2]中,`success:function(res)` 也是类似的用法,当向 `demo.php` 发送请求成功后,会将服务器返回数据(即两个数相加的结果)通过 `console.log(res)` 打印出来 [^2]。 以下是一个完整的示例代码: ```javascript $.ajax({ url: "testTest?num=1", success: function(result) { // 处理服务器返回数据 console.log(result); } }); ``` ### 常见问题及解决办法 1. **跨域问题**:当请求的 `url` 与当前页面的域名、端口或协议不同,会出现跨域问题。现代浏览器出于安全考虑,会限制跨域请求。解决办法有: - **JSONP**:如果服务器支持 JSONP 格式,可以将 `dataType` 选项设置为 `"jsonp"`。不过 JSONP 只支持 `GET` 请求。 - **CORS**:服务器端配置允许跨域访问。服务器需要在响应头中添加 `Access-Control-Allow-Origin` 等相关字段。 2. **请求失败**:可能是由于网络问题、服务器错误等原因导致请求失败。可以通过 `error` 回调函数来处理失败情况。示例代码如下: ```javascript $.ajax({ url: "testTest?num=1", success: function(result) { console.log(result); }, error: function(xhr, status, error) { console.log("请求失败:" + error); } }); ``` 3. **数据格式问题**:如果服务器返回数据格式与 `dataType` 选项指定的格式不一致,可能会导致解析错误。确保 `dataType` 选项设置正确,并且服务器返回数据格式与之匹配。例如,如果 `dataType` 设置为 `"json"`,服务器应返回合法的 JSON 数据
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值