HTML页面代码:

<script type="text/javascript">

function UrlSearch(){
var name,value;
var str=location.href; //取得整个地址栏
var num=str.indexOf("?")
str=str.substr(num+1); //取得所有参数 stringvar.substr(start [, length ]
var arr=str.split("&"); //各个参数放到数组里
for(var i=0;i < arr.length;i++){
num=arr[i].indexOf("=");
if(num>0){
name=arr[i].substring(0,num);
value=arr[i].substr(num+1);
this[name]=value;
}
}
}

function jsonp(){

var Request=new UrlSearch(); //实例化

var goods_name = Request.name

$.ajax({
type: "GET",
async: false,
url:"http://test.com/jp4.php",
dataType: "jsonp",
data:{goods_name:goods_name},
jsonp: "callback",//传递给请求处理程序或页面的,用以获得jsonp回调函数名的参数名(callback)
jsonpCallback:"call",//自定义的jsonp回调函数名称,默认为jQuery自动生成的随机函数名,也可以写"?",jQuery会自动为你处理数据
success: function(jsons){

console.log(jsons)
if(jsons.status==1){
alert("goods_id:"+jsons.goods_id+";\n面料编号:"+jsons.goods_name+";\n描述是:"+jsons.keywords+';\n基本价格是:'+jsons.shop_price+"韩元")
}else if(jsons.status==0){
alert(jsons.data)
}
},
error: function(jsons){
//console.log(jsons)
alert(jsons.status+"\n路径错误")
}
});
}
window.onload=(jsonp());
</script>

PHP代码:

<?php
include_once "./radio_class.php";
$radio = new Radio();
$goods_name = $_GET["goods_name"];
//$goods_name = 'Mvbb4AeP';
if(empty($goods_name)){
$arr = array('data'=>'参数为空','status'=>0);
$results = json_encode($arr);
echo "call($results)";exit();
}
$table='ecs_goods';
$where=array('goods_name'=>$goods_name);
$fieldes=array('goods_id','goods_name','keywords','shop_price');
$arr = $radio->fileds_select($table,$where,$fieldes);
//print_r($arr);
echo $arr;
exit();

附:radio_class.php

<?php
header('content-type:text/html;charset=utf-8');
class Radio{
private $host;
private $port;
private $user;
private $pass;
private $dbname;
private $charset;
private $link;
private static $db;

public function __construct($arr=array()){
$this->host = isset($arr['host']) ? $arr['host'] : 'localhost';
$this->port = isset($arr['port']) ? $arr['port'] : '3306';
$this->user = isset($arr['user']) ? $arr['user'] : 'root';
$this->pass = isset($arr['pass']) ? $arr['pass'] : 'root';
$this->dbname = isset($arr['dbname']) ? $arr['dbname'] : 'newlibrary';
$this->charset = isset($arr['charset']) ? $arr['charset'] : 'utf8';
//连接数据库
$this->db_connect();
//选择数据库
$this->db_usedb();
//设置字符集
$this->db_charset();
}
public function __clone(){
trigger_error('克隆不被允许',E_USER_ERROR);
}
private function aaa(){
echo 'nihao1';die;
}
public function __call($action,$b){
var_dump($action);var_dump($b);die;
}
public static function getInstance($arr){
if(!self::$db){
self::$db = new Self($arr);
}
return self::$db;
}
//连接数据库
private function db_connect(){
$this->link=mysqli_connect($this->host.':'.$this->port , $this->user , $this->pass);
if(!$this->link){
echo "数据库连接失败 <br>";
echo "错误编码是".mysqli_errno().'<br>';
echo "错误原因是".mysqli_error().'<br>';
exit;
}
}
//选择数据库
private function db_usedb(){
mysqli_query($this->link,"use {$this->dbname}");
}
//设置字符集
private function db_charset(){
mysqli_query($this->link,"set names {$this->charset}");
}
/**
* 执行sql语句
* @param $sql
* @return source
**/
public function query($sql){
$res=mysqli_query($this->link,$sql);
if(!$res){
echo "SQL语句有错误 <br>";
echo "错误编码是".mysqli_errno($this->link).'<br>';
echo "错误原因是".mysqli_error($this->link).'<br>';
exit;
}
return $res;
}

/**
* 获取一条记录
* 前置条件 资源型
* @param $query
* @return array 二维
**/
public function getRowFromSourse($query,$type='assoc'){
if(!in_array($type, array('assoc','array','row'))){
die('转化错误');
}
$funcname="mysqli_fetch_".$type;
return $funcname($query);
}
/**
* 获取列表
* @param $sql
* @return array 二维
**/
public function getAll($sql){
$query=$this->query($sql);
$list=array();
$list = $this->getRowFromSourse($query);
/*while ($row=$this->getRowFromSourse($query)) {
$list[]=$row;
}*/
return $list;
}

/**
* 显示数据
* @param $table 表名
* @param $fieldes 字段名
* @param $where where条件
* @return array 二维数组
**/
public function fileds_select($table,$where=array(),$fieldes=array()){
$str='1=1';
$strs='';
if(is_array($where)){
foreach ($where as $key => $v) {
$str.=' and '.$key."='".$v."'";
}
}
if(is_array($fieldes)){
foreach ($fieldes as $key => $v) {
$strs.=','.$v;
}
$strs = substr($strs,1);
}

$sql="select $strs from $table where $str";

$result = $this->getAll($sql);
if(empty($result)){
$arr = array('data'=>'数据为空','status'=>0);
$result = json_encode($arr);
return "call($result)";
}
//return $result;die;
$result['status']=1;
$result = json_encode($result);
return "call($result)";

}
}

注:一定要在两个域名下测试哦

ajax实现jsonp跨域接口的更多相关文章

  1. 06: AJAX全套 & jsonp跨域AJAX

    目录: 1.1 AJAX介绍 1.2 jQuery AJAX(第一种) 1.3 原生ajax(第二种) 1.4 iframe“伪”AJAX(第三种) 1.5 jsonp跨域请求 1.6 在tornad ...

  2. jQuery ajax的jsonp跨域请求

    一直在听“跨域跨域”,但是什么是跨域呢?今天做了一些了解.(利用jQuery的jsonp) jQuery使用JSONP跨域 JSONP跨域是利用script脚本允许引用不同域下的js实现的,将回调方法 ...

  3. AJax与Jsonp跨域访问

    一.JavaScript的AJax AJAX即"Asynchronous Javascript And XML"(异步JavaScript和XML) 设计AJax使用的一种重要技术 ...

  4. ajax使用jsonp跨域调用webservice error错误信息"readyState":4,"status":200,"statusText":"success"

    主要还是接口写有问题 至于ajax保持简洁写法即可 $.ajax({ dataType: 'jsonp', type: ‘get’, data: {}, url: '' })

  5. ajax,jsonp跨域访问数据

    访问高德aip天气接口 <!DOCTYPE html> <html> <head> <meta charset="utf-8"> & ...

  6. ajax之jsonp跨域请求

    前端ajax请求代码 后台php处理代码

  7. (三)ajax请求不同源之jsonp跨域

    凡是拥有"src"这个属性的标签都具有跨域的能力,比如<script>.<img>.<iframe>. JS中,我们直接用XMLHttpRequ ...

  8. jquery ajax怎么使用jsonp跨域访问

    在项目中使用接口的比较多,在客户端跨域访问,jquery中只能使用jquery ajax的jsonp方法. 值得注意的是,jQuery.ajax()只支持get方式的跨域,post的方式是不支持的.& ...

  9. 原生JS封装Ajax插件(同域&&jsonp跨域)

    抛出一个问题,其实所谓的熟悉原生JS,怎样的程度才是熟悉呢? 最近都在做原生JS熟悉的练习... 用原生Js封装了一个Ajax插件,引入一般的项目,传传数据,感觉还是可行的...简单说说思路,如有不正 ...

随机推荐

  1. 【摘】Mysql备份还原数据库之mysqldump实例及参数详细说明

    原文http://www.cnblogs.com/xuejie/archive/2013/01/11/2856911.html   我们在运营项目的过程中肯定会遇到备份数据库,还原数据库的情况,我们一 ...

  2. XQuery的 value() 方法、 exist() 方法 和 nodes() 方法

    Xml数据类型 /*------------------------------------------------------------------------------+ #| = : = : ...

  3. 用MyEclipse自动生成SessionFactory文件

    1.Hibernate1->MyEclipse->Capabilities->Install Hibernate Facet.如图所示. 2.选择Hibernate的版本. 3.创建 ...

  4. php使用saop简单例子和注意事项

    首先配置下PHP的soap环境支持: 找到php.ini文件:extension=php_soap.dll :always_populate_raw_post_data = -1 删除掉": ...

  5. sass安装与使用

    安装: 1.安装ruby 2.安装Koala,用于sass编译 3.gem install sass(mac电脑安装如果安装报错,一般是权限问题,没有权限安装到ruby下面,因此可以尝试sudo ge ...

  6. C#中用RichTextBox实现图文混排和保存的例子

    using System; using System.Collections.Generic; using System.Drawing; using System.Windows.Forms; us ...

  7. redis高可用分布式集群

    一,高可用 高可用(High Availability),是当一台服务器停止服务后,对于业务及用户毫无影响. 停止服务的原因可能由于网卡.路由器.机房.CPU负载过高.内存溢出.自然灾害等不可预期的原 ...

  8. Processing与Java混编初探

    Processing其实是由Java开发出的轻量级JAVA开发语言,主要用于做原型,有setup.draw两个主接口和几个消息相应接口 Processing和Java混编很简单...在Java中引入外 ...

  9. mybatis - resultMap

    resultMap有比较强大的自动映射,下面是摘自mybatis中文官网的的片段: 当自动映射查询结果时,MyBatis会获取sql返回的列名并在java类中查找相同名字的属性(忽略大小写). 这意味 ...

  10. python---进程、线程

    一.进程 二.线程 1,使用Thread类创建线程 #!/usr/bin/env python # -*- coding:utf-8 -*- __author__ = 'zhoufeng' impor ...