如何使用jQuery合并两个json对象?

时间:2016-05-01 18:21:50

标签: javascript php jquery json

我有两个json对象数据和foo,我想合并它们并创建一个json对象。结果json应该包含来自foo的所有值和来自data的值。到目前为止,我有类似的东西

的javascript:

  $('#btn').click(function(){
            var imdbid=$('#tst').val();
            var url = "http://www.omdbapi.com/?i="+imdbid+"&plot=full&r=json"
            $.ajax({
            url:url,
            dataType:'json',
            success:function (json) {
                 data=json
                 var foo=$('form').serializeJSON() // store json string 
                 var marged=$.extend(data,foo);
                 console.log(marged);
                }
            })   
            }) 

HTML:

<form id="myform">
<label>imdb id:</label><input type="text"  id="tst" name="tst"/></form><br/>
<label>comment:-</label><input type="text" id="comment" name="comment" /><br/>
<label>link:-</label><input type="text" name="link" id="link" /><br/>
<input type="button" value="search"  id="btn"/>
</form>

第一个对象包含从api返回的数据,foo包含form.i的值,希望在成功函数上发送两个对象并发送给php。 当我试图打印出数据时,如下所示

{Title: "Mother's Day", Year: "2016", Rated: "PG-13", Released: "29 Apr 2016", Runtime: "118 min"…}
Actors
:
"Britt Robertson, Jennifer Aniston, Julia Roberts, Timothy Olyphant"
Awards
:

imdbID
:
"tt4824302"
tst
:
"tt4824302"

它获得的第一个输入值没有显示第二个输入值。

2 个答案:

答案 0 :(得分:1)

首先将json更改为object而不是将它们合并为

data=json

var foo=$('form').serializeJSON();

marged=$.extend(JSON.parse(data),JSON.parse(foo));

console.log(marged);

答案 1 :(得分:1)

您正在关闭此行中的表格:

<label>imdb id:</label><input type="text"  id="tst" name="tst"/></form><br/>

...所以它只获得第一个输入字段; )