首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在数据属性中插入变量

在数据属性中插入变量
EN

Stack Overflow用户
提问于 2013-03-17 20:55:18
回答 1查看 11.5K关注 0票数 2

我很确定这有一个我遗漏的简单的解决方案。我有以下ajax脚本。

代码语言:javascript
复制
<!DOCTYPE html>
<html>
<head>
 <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<script>
function postForm() {
    var ret = $('#test').val();
    $.ajax({
            type: 'POST',
            url: 'http://10.0.0.8:9000/demo',
            data: '{"name" : '+ret'}',
            contentType: "application/json; charset=utf-8",

        })
    }

</script>
</head>
<body>
    <form id="ajaxForm" onSubmit="postForm(); return false;"  method="post"> 
        <input id="test" type="text" name="name" value="Hello JSON" /> 
        <input type="submit" value="Submit JSON" /> 
    </form>

</body>
</html>

我提取了id='test‘的输入值,将其放入ret变量中。然后,我尝试将其插入到data属性中,并通过ajax发送。我尝试了各种各样的引用,但似乎都不起作用……我做错了什么?

感谢前面的

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-03-17 20:58:09

您似乎已经为AJAX脚本指定了一个绝对url:

代码语言:javascript
复制
http://10.0.0.8:9000/demo

您似乎违反了内置在浏览器中的same origin policy,它阻止您发送跨域AJAX调用。

所以这个AJAX调用不能工作,除非这个超文本标记语言页面托管在http://10.0.0.8:9000上。

此外,您似乎有一个尾随的,,这将导致无效的javascript。我还将使用JSON.stringify方法将请求正确序列化到JSON:

代码语言:javascript
复制
function postForm() {
    var ret = $('#test').val();
    $.ajax({
        type: 'POST',
        url: '/demo',
        data: JSON.stringify({ name: ret }),
        contentType: 'application/json; charset=utf-8',
        success: function(result) {
            // do something iwth the result of the AJAX call here
        }
    });
}

注意,我在这里使用了相对路径(url: '/demo')来确保不违反同源策略,并确保将AJAX请求发送到相同的域。

另一方面,如果您需要发送跨域AJAX调用,那么您有两种可能,包括使用JSONP (仅限于GET请求)或CORS,这两种方法都涉及到对服务器端API的修改。如果您无法控制您的服务器端API,并且无法对其进行修改,则必须在您的域(托管包含此javascript的HTML页面)上编写一个服务器端脚本,该脚本将充当您的域和远程域之间的桥梁/代理,然后将AJAX请求发送到您的服务器端脚本。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15460947

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档