datasnap ajax jsonp,有没有办法在Delphi DataSnap REST服务器上使用JSONP?

似乎没有办法使用DataSnap来实现带有Padding的JSONP(JSON)解决方案,但是我想在这里抛出这个问题以防有人解决了这个问题。有没有办法在Delphi DataSnap REST服务器上使用JSONP?

背景:JSONP是一种利用HTML脚本元素的跨站点引用功能来克服XmlHttpRequest类的相同源策略的机制。使用XmlHttpRequest,您只能从HTML文档提供的相同域中获取数据(JSON对象)。但是如果你想从多个站点检索数据并将数据绑定到浏览器中的控件呢?

使用JSONP,脚本元素的src属性不引用JavaScript文件,而是引用Web方法(可驻留在检索到HTML的不同域上的Web方法)。这个Web方法返回JavaScript。

脚本标签假定返回的数据是一个JavaScript文件并正常执行。但是,Web方法实际返回的是以文字JSON对象作为参数的函数调用。假定被调用的函数是被定义的,该函数执行并且可以在JSON对象上运行。例如,该函数可以从JSON对象提取数据并将该数据绑定到当前文档。

JSONP的优缺点已被广泛讨论(它代表了一个非常严重的安全问题),所以在这里没有必要重复说明。

我感兴趣的是如果有人已经找到了如何在Delphi的DataSnap REST服务器上使用JSONP。就像我看到的那样,问题就在这里。一个典型的JSONP使用可能包括脚本标记看起来是这样的:

的的GetData Web方法将返回调用类似如下:

workit({"id": "Delphi Pro", "price":999});

和workit功能可能看起来像这样的:

function workit(obj) {

$("#namediv").val(obj.id);

$("#pricediv").val(obj.price);

}

问题是的DataSnap似乎并不能够返回一个简单的字符串像 的

workit({"id": "Delphi Pro", "price":999});

相反,它被包裹着,像下面这样:

{"result":["workit({\"id\":\"Delphi Pro\",\"price\":999});"]}

很显然,这是不可执行的JavaScript。

任何想法?

+2

这个问题可以降低到“ DataSnap提供了一个过滤器/钩子/事件,它允许在发送给客户端之前修改生成的JSON响应“? –

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/469740.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

PackagesNotFoundError: The following packages are not available from current channels:

解决方法很简单。 先输入以下命令: conda config --append channels conda-forge 在安装你所需要的包即可。

redis安装与基本配置

获取下载包 wget http://download.redis.io/releases/redis-2.8.24.tar.gz 解压和编译 tar -zxvf redis-2.8.24.tar.gz cd redis-2.8.24/ make #如果报jemalloc的错,就用make MALLOClibc make test make test可能报错说需要tcl 8.5,用yum安装 yum ins…

★Anaconda中创建、切换、删除虚拟环境(指定仓库)

指定仓库安装源文件 pip install 包名 -i http://pypi.douban.com/simple 可以换源列表: 阿里云 https://mirrors.aliyun.com/pypi/simple/ 中国科技大学 https://pypi.mirrors.ustc.edu.cn/simple/ #常用 豆瓣(douban) http://pypi.douban.com/simple/ 清华…

怎样修改t3服务器地址,怎样修改t3服务器地址

怎样修改t3服务器地址 内容精选换一换华为云帮助中心,为用户提供产品简介、价格说明、购买指南、用户指南、API参考、最佳实践、常见问题、视频帮助等技术文档,帮助您快速上手使用华为云服务。Atlas 200 DK开发者板支持通过USB端口或者网线与Ubuntu服务器…

结构体中.和-的用法

#include"stdio.h" #include"stdlib.h"struct linkwqf{int age;char * name;struct linkwqf* next; }; struct linkwqf linkwww1;/*第一种声明结构体类型变量的方法 这种方法意义不大*/ typedef struct linkwqf linkwww2;/*第一种声明结构体类型变量的方…

外网访问FTP服务,解决只能以POST模式访问Filezilla的问题

在内网可以正常使用PASV,但是在外网不行,导致数据传输慢或者根本连接不了,在FlashFXP中通过日志,找到了解决方法解决方法1.在Filezilla——Edit——Settings——Passive mode Settings 将mode切换为【Use the following IP:】 后面的值跟的是…

智慧交通day02-车流量检测实现03:辅助功能(交并比and候选框的表现形式)

学习目标 能够实现两个目标框的交并比 了解候选框在多目标跟踪中的表达方式及相应转换方法 IOU是交并比(Intersection-over-Union)是目标检测中使用的一个概念是产生的候选框(candidate bound)与原标记框(ground tru…

电脑pro,拒绝等待!七彩虹全新设计师电脑ProMaster H1为创意加速

新年伊始,七彩虹科技正式发布了全新设计师领域整机系列:Colorful ProMaster(专业大师)。并同时公布了旗下第一款设计师电脑整机:Colorful ProMaster H1。其采用全新三面环绕布艺设计要素,搭载NVIDIA GeForce RTX Studio和英特尔傲…

智慧交通day02-车流量检测实现04:卡尔曼滤波器

1、背景介绍 卡尔曼滤波(Kalman)无论是在单目标还是多目标领域都是很常用的一种算法,我们将卡尔曼滤波看做一种运动模型,用来对目标的位置进行预测,并且利用预测结果对跟踪的目标进行修正,属于自动控制理论…

java 简单类继承

class Person {String name;int age;public String talk(){return "我是:"this.name",今年:"this.age"岁";}public Person()/* 无参数的构造函数*/{System.out.println("1.public Person(){}");} } class Stude…

linux下的I2C驱动记录(RK)

现在做的是RK平台的I2C驱动,不是说linux每个外设对应一个设备文件吗?可是找了一下一直没找到,今天特别搞了一下。I2C设备是注册为platform平台驱动的。 下面是我用adb命令查看的 linux的设备文件不一定只在dev/这个目录下面,像sys/ 目录下面也会有一些设备文件的 MID下面…

成功解决 ProxyError: Conda cannot proceed due to an error in your proxy configuration

给win10的ubuntu1804安装anaconda, 执行conda create -n daily python3.7创建虚拟环境时报错 Collecting package metadata (current_repodata.json): failedProxyError: Conda cannot proceed due to an error in your proxy configuration. Check for typos and other confi…

【练习---日志文件的恢复】-----多元化成员中,单个成员丢失

1.查看当前的日志组成员: 09:59:28 SYSORA11GR2>select group#,member from v$logfile;GROUP# MEMBER ---------- --------------------------------------------------3 /u01/app/oracle/oradata/ORA11GR2/redo03.log2 /u01/app/oracle/oradata/ORA11GR2/redo02…

android 4.2修改设置菜单的背景颜色

设置中的背景主要来主题的设置, 在4.X后, android添加了新的主题: Holo 从Settings/AndroidManifest.xml中找到: Xml代码 <application android:label"string/settings_label" android:icon"mipmap/ic_launcher_settings" android…

智慧交通day02-车流量检测实现05:卡尔曼滤波器实践(小车模型)

1.filterpy FilterPy是一个实现了各种滤波器的Python模块&#xff0c;它实现著名的卡尔曼滤波和粒子滤波器。我们可以直接调用该库完成卡尔曼滤波器实现。其中的主要模块包括&#xff1a; filterpy.kalman 该模块主要实现了各种卡尔曼滤波器&#xff0c;包括常见的线性卡尔曼滤…

Linux多线程——使用互斥量同步线程

前文再续&#xff0c;书接上一回&#xff0c;在上一篇文章&#xff1a;Linux多线程——使用信号量同步线程中&#xff0c;我们留下了一个如何使用互斥量来进行线程同步的问题&#xff0c;本文将会给出互斥量的详细解说&#xff0c;并用一个互斥量解决上一篇文章中&#xff0c;要…

asp.net基础知识

面向对象编程特征&#xff1a;抽象化&#xff0c;讲究对象&#xff0c;集成&#xff0c;封装&#xff0c;多态。 类&#xff1a;一类事物&#xff0c;苹果&#xff0c;梨&#xff0c;香蕉都是水果&#xff0c;都是一类。 类的特征&#xff1a;构造函数&#xff0c;字段属性和方…

智慧交通day02-车流量检测实现05:小车匀速案例

""" 现在利用卡尔曼滤波对小车的运动状态进行预测。主要流程如下所示&#xff1a;导入相应的工具包小车运动数据生成参数初始化利用卡尔曼滤波进行小车状态预测可视化&#xff1a;观察参数的变化与结果 """#导入包 from matplotlib import pyplo…

ubuntu start

首先用你当初装ubuntu的方法进入live cd打开终端 输入以下命令&#xff1a;1&#xff1a;sudo -i2&#xff1a;fdisk -l &#xff08;找一找你的ubuntu安装在那个分区&#xff09;下面挂载原系统的根目录&#xff1a;mount /dev/sdax /mnt&#xff08;x代表你Ubuntu所在分区编号…

排座椅

题目描述 上课的时候总会有一些同学和前后左右的人交头接耳&#xff0c;这是令小学班主任十分头疼的一件事情。不过&#xff0c;班主任小雪发现了一些有趣的现象&#xff0c;当同学们的座次确定下来之后&#xff0c;只有有限的D对同学上课时会交头接耳。同学们在教室中坐成了M行…