我试图通过使用ES6承诺的jQuery发布帖子请求:
我有一个功能:
getPostPromise(something, anotherthing) {
return new Promise(function(resolve, reject) {
$.ajax({
url: someURL,
type: 'post',
contentType: 'application/json; charset=utf-8',
data: JSON.stringify(
something: something,
anotherthing: anotherthing
}),
dataType: 'json',
success: resolve,
error: reject
});
});
}
Run Code Online (Sandbox Code Playgroud)
我称之为:
getPostPromise(
'someFooStuff',
'someBarStuff'
).then(
function(returnedData) {
console.log("Good: ", returnedData);
},
function(responseObject) {
console.log("Bad: ", responseObject);
}
).catch(
function(errorThrown) {
console.log("Exception: ", errorThrown);
}
);
Run Code Online (Sandbox Code Playgroud)
我的服务器正在返回预期的响应,请求主体是JSON格式,但我的控制台输出是:
好:未定义
为什么我没有收到返回的数据?
感谢任何人/每个人的帮助.
---更新编辑---
我把我的js减少到了:
import $ from 'jquery';
$.get('http://localhost:8008/api/user')
.done(function(data) {
console.log(data);
});
Run Code Online (Sandbox Code Playgroud)
我仍然未定义为输出.如果我在网络选项卡中打开请求,我可以看到具有正确数据的响应对象.请求发出,我的服务器很满意并且响应,结果在我的浏览器中,但是done的数据参数是未定义的.我很难过.
---更新2 - 解决方案---
我发现问题在于使用:https …
我有几个具有唯一ID的元素,如下所示:
<div id='item-1-top'></div>
<div id='item-2-top'></div>
<div id='item-3-top'></div>
Run Code Online (Sandbox Code Playgroud)
我希望以下内容可以使用jQuery:
$("#item-[.]+-top").each(function() {
$(this).hide();
});
Run Code Online (Sandbox Code Playgroud)
我对正则表达式没有很好的掌握,我会很感激一些输入,因为上面的内容似乎不正确.
嗯,几乎就是它在锡上所说的.
我真的好奇Statigram这样的网页如何在没有用户身份验证的情况下进行搜索功能并且没有超出限制?
如果我是正确的,Instagram API允许每小时5000次呼叫,所以我相信他们确实拥有的流量超过每小时5000次请求.
也许这是一个愚蠢的问题,Statigram与Instagram有特殊协议使用他们的API,或者他们可能不使用API而他们使用其他方法?
我是React的新手.想要在单独的文件中使用小组件开发应用程序,并将它们导入我的App.js
我试过但却无法弄清楚我做错了什么.
这是我的HTML:
<!DOCTYPE html>
<html>
<head>
<title>App</title>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=no">
<script src="https://unpkg.com/react@15.3.2/dist/react.js"></script>
<script src="https://unpkg.com/react-dom@15.3.2/dist/react-dom.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/babel-core/5.8.23/browser.min.js"></script>
</head>
<body>
<script type="text/babel" src="js/App.js"></script>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
这是我的App.js :(来自js /目录)
import MyComp from 'components/MyComp';
class App extends React.Component {
render() {
return (
<MyComp />
)
}
}
ReactDOM.render(
<App />,
document.body
);
Run Code Online (Sandbox Code Playgroud)
这是我的MyComp.js(来自js/components /目录)
class MyComp extends React.Component{
render() {
return (
<div>
Hello World!
</div>
)
}
}
export default MyComp;
Run Code Online (Sandbox Code Playgroud)
如果我这样试试,我什么也看不见.然而,如果我MyComp在App.js中创建类,它就像一个魅力.
有什么建议我做错了什么?
我为我的对象City创建了这个类
class City: NSObject {
var _name:String = ""
var name:String {
get {
return _name
}
set (newVal) {
_name = newVal
}
}
}
Run Code Online (Sandbox Code Playgroud)
然后,当我创建我的对象时,我做:
var city:City!
city.name = "London" //crash here
println("name city is\(city.name)");
Run Code Online (Sandbox Code Playgroud)
当我使用消息"致命错误:在解开可选值时意外发现nil"设置名称时崩溃
我有一个函数,它接受一些参数并呈现一个 SVG。我想根据传递给函数的名称动态导入该 svg。它看起来像这样:
import React from 'react';
export default async ({name, size = 16, color = '#000'}) => {
const Icon = await import(/* webpackMode: "eager" */ `./icons/${name}.svg`);
return <Icon width={size} height={size} fill={color} />;
};
Run Code Online (Sandbox Code Playgroud)
根据动态导入的webpack 文档和神奇的注释“eager”:
“不生成额外的块。所有模块都包含在当前块中,并且不会发出额外的网络请求。仍然返回一个 Promise,但已经解决了。与静态导入相比,模块在调用导入之前不会执行() 制成。”
这就是我的图标解决的问题:
> Module
default: "static/media/antenna.11b95602.svg"
__esModule: true
Symbol(Symbol.toStringTag): "Module"
Run Code Online (Sandbox Code Playgroud)
试图以我的函数试图给我这个错误的方式呈现它:
Objects are not valid as a React child (found: [object Promise]). If you meant to render a collection of children, use an array instead.
我不明白如何使用这个导入的 Module …
我想克隆一个表中的一行,但当我会克隆,新元素的name和id将是一样的,从它被克隆的元素.
我需要的是克隆元素与不同的name和id.
在JavaScript中,如何计算24小时格式的两次之间的差异?
例如:Get多少从经过的小时08:00:00到23:00:00.
下面我从两个下拉菜单中获取两个时间值,并尝试计算两次之间的小时差异.我得错了结果......
工作示例:http://jsfiddle.net/VnwF7/1/
脚本:
$(document).ready(function() {
function calculateTime() {
//get values
var valuestart = $("select[name='timestart']").val();
var valuestop = $("select[name='timestop']").val();
//create date format
var timeStart = new Date("01/01/2007 " + valuestart);
var timeEnd = new Date("01/01/2007 " + valuestop);
var difference = timeEnd - timeStart;
var diff_result = new Date(difference);
var hourDiff = diff_result.getHours();
$("p").html("<b>Total Hours:</b> " + hourDiff )
}
$("select").change(calculateTime);
calculateTime();
});
Run Code Online (Sandbox Code Playgroud)
HTML:
<select name="timestart">
<option value="00:00:00">12:00 am</option>
<option value="01:00:00">1:00 am</option> …Run Code Online (Sandbox Code Playgroud) 我有多个条件需要检查和执行,如下所示。
if (date == current_date && source === "s3") {
table_name = "Table1";
} else if (date == current_date && source !== "s3") {
table_name = "Table2";
} else if (date !== current_date && source === "s3") {
table_name = "Table3";
} else if (date !== current_date && source !== "s3") {
table_name = "Table4";
}
Run Code Online (Sandbox Code Playgroud)
我认为在这里使用 switch 语句没有意义,因为我们没有针对 switch 表达式评估 case 语句表达式。
那么可以使用多个 if else 语句或任何更好的替代方法吗?
在移动版 Safari 上,当虚拟键盘打开时,屏幕应呈现如下图像:

在哪里:
在移动版 Safari 上,当软键盘打开时,在输入或导航栏上拖动可以上下移动整个视口。
我有一个屏幕截图视频演示了这个问题:https : //youtu.be/GStBjRVpoGU
我已经在这个问题上花了几个月的时间,包括在 Stack Overflow 上浏览了许多类似的问题,但我一直无法找到一个有效的解决方案(或者,至少,一个我能够解决的问题)。
此应用程序是一个混合移动应用程序:使用 React.js 构建为 Web 应用程序,但使用 WebView 组件封装在 React Native 应用程序中。然而,即使在普通的移动 Safari 窗口中打开 Web 应用程序,也存在同样的问题。
Mobile Safari 有一个相关问题,软键盘在打开时会将整个视口向上推,从而使视口的上半部分向上推离屏幕。这个优秀的博客提供了该问题的描述和解决方案。我实施了该解决方案。它在软键盘打开时阻止了视口向上移动,但在软键盘打开后视口仍然可以滑动。
另一个问题是,window.innerHeight当软键盘打开/关闭时,移动版 Safari 不会更新。为了解决这个问题,我react-native-keyboard-spacer在 React Native 应用程序中使用了如下方式:
render() {
return (
<React.Fragment>
<SafeAreaView >
<WebView/>
</SafeAreaView>
<KeyboardSpacer />
</React.Fragment>
);
}
Run Code Online (Sandbox Code Playgroud)
每当软键盘打开/关闭时,这都会改变 Webview 的高度,因此window.innerHeight等也会发生变化。
众所周知,position: fixed;当软键盘打开时,移动 Safari 无法正常工作,所以我position: absolute;改用了,这要感谢另一个非常有用的博客 中的建议。 …